YARN 集群的 Node 节点都处在 Unhealthy 状态

2023-10-28 17:59

本文主要是介绍YARN 集群的 Node 节点都处在 Unhealthy 状态,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述

在客户的 Yarn UI 可以看到有 local-dirs are badlog-dirs are bad 报错,node 节点都是 unhealthy 状态,如图:

原因分析

之所以会有 local-dirs are badlog-dirs are bad 报错,是因为在我们集群的 yarn-site.xml 里参数 yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage 的默认值是 90%,到达到这个值会触发上述报错。之所以会触发 yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage 的默认值是因为:

  1. 客户的数据是存储在 Storage 里的,在进行计算之前需要将数据先读取到各个节点,客户在读取数据生成 RDD 之后对 RDD 的缓存采用的是 MEMORY_AND_DISK_2,也没有采用序列化的方式,也就是说如果内存存不下会存到本地磁盘,而且会存在不同的节点上存 2 份。
  2. 在计算的过程中会产生大量的中间数据结果,如果内存中存不下也会将结果写到磁盘上。
  3. 一个 batch 的数据还没处理完,下一个 batch 就来了,上一个 batch 占用的内存还没释放(batch 任务还没执行完),最后都会堆积到磁盘上。

解决方法

  1. 首先要先 kill 掉所有的任务,因为当前客户的所有节点已经是 unhealthy 状态了,可以采用如下办法 kill 所有的任务:

    shell复制

    for app in `yarn application -list | awk '$6 == "ACCEPTED" { print $1 }'`; do yarn application -kill "$app";  done
    
  2. 重启所有节点。

  3. 重新提交任务。

     

【现象】查看到yarn监控页面上有十几个Unhealthy 节点,分别进去Unhealthy Nodes查看各个目录的占用磁盘情况,发现是HDFS的有关目录占用过多了,这是因为有很多临时文件占用了Hdfs。

tmp_users=`hdfs dfs -ls /tmp/ | awk '{print $8}' | cut -d"/" -f3 | xargs `
echo $tmp_users 	# 查看总共有多少个用户使用hive on yarn

 【解决1】批量清理每个用户在hdfs临时目录下产生的文件

for user in $tmp_users; do hdfs dfs -rm -r /tmp/${user}/.staging/*; done

需要清理HDFS上的回收站

for user in $tmp_users; do hdfs dfs -rm -r /user/yarn/.Trash/Current/tmp/${user}/.staging/*; echo CLEANED ${user} Trash on HDFS; done

终极恢复方案:

 更换目录:

 yarn nodemanager format

重启服务 

 

 

这篇关于YARN 集群的 Node 节点都处在 Unhealthy 状态的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/294966

相关文章

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no

Redis高可用-主从复制、哨兵模式与集群模式详解

《Redis高可用-主从复制、哨兵模式与集群模式详解》:本文主要介绍Redis高可用-主从复制、哨兵模式与集群模式的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Redis高可用-主从复制、哨兵模式与集群模式概要一、主从复制(Master-Slave Repli

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展