群集上的节点因不健康状态而导致的原因是什么?
基于我的有限理解,通常在给定节点上的HDFS利用率超过阈值时发生。此阈值使用max-disk-utilization-per-disk-percentage属性定义。
我观察过有时在spark-sql或使用pyspark节点上触发内存密集型spark函数时会进入不健康状态。进一步查看后,我对处于不健康状态的节点进行了ssh,并发现实际上dfs利用率低于75%,并且我的集群上为上述属性设置的值为99。
所以我认为还有一些其他的事实,我错过了基本上导致这种行为。
提前感谢您的帮助。
Manish Mehra
答案 0 :(得分:2)
每个hadoop节点(从属)上的YARN Nodemanager将根据健康检查程序确定的启发式标记该节点不健康。默认情况下,它将是磁盘检查程序。如果设置,它也可以是外部健康检查器。
默认Disk Checker
检查节点上的可用磁盘空间,如果磁盘超过90%,则会标记该节点运行状况不佳。 (默认情况下设置为yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage)
在您的情况下,您似乎正在检查跨节点的HDFS使用情况。您需要使用“df -h”验证各个节点上的磁盘利用率,以检查该节点上的磁盘使用情况。如果您看到/ mnt /超过99%的卷,那么它将被标记为不健康。
您需要查找占用大部分磁盘空间的顶级目录并相应地执行相应的操作。 HDFS将使用节点上的磁盘(使用dfs.data.dir设置),如果节点在作业运行期间的利用率非常高,则会导致节点运行状况不佳。但是,如果没有高HDFS利用率,节点可能会变得不健康。