背景
任务堆积产生告警,执行yarn node -list 发现一个node节点都没有,排查日志发现 /data1/yarn/local, ary bad 确定是nodemanger处于非健康状态
1、健康检查
image.pngNodeHealthCheckerService通过周期性地运行一个自定义脚本(由组件NodeHealthScriptRunner完成)和向磁盘写文件(由服务LocalDirsHandlerService完成)检查节点的健康状况,并将之通过NodeStatus-Updater传递给ResourceManager。一旦ResourceManager发现一个节点处于不健康状态,则会将它加入黑名单,此后不再为它分配认为,直到再次转为健康状态。
节点被加入黑名单后,正在运行的Container仍会正常运行,不会被杀死
2. 自定义Shell脚本健康检查
在yarn-site.xml文件中配置这些参数,用于拓展健康检查环境,内存,io等
image.png
demo
可用内存少低于10%认为不健康脚本,默认没有脚本,不会启动线程
#!/bin/bash
MEMORY_RATIO=0.1
freeMem=`grep MemFree /proc/meminfo | awk '{print $2}'`
totalMem=`grep MemTotal /proc/meminfo | awk '{print $2}'`
limitMem=`echo | awk '{print int("'$totalMem'"*"'$MEMORY_RATIO'")}'`
if [ $freeMem -lt $limitMem ];then
echo "ERROR, totalMem=$totalMem, freeMem=$freeMem, limitMem=$limitMem"
else
echo "OK, totalMem=$totalMem, freeMem=$freeMem, limitMem=$limitMem"
fi
3. 磁盘健康检查
默认自带的健康检查方式,默认是开启的
名称 | 含义 | 默认值 | 备注 |
---|---|---|---|
yarn.nodemanager.disk-health-checker.enable | 开启磁盘健康检查 | true | |
yarn.nodemanager.disk-health-checker.disk-utilization-threshold.enabled | 开启磁盘使用率健康检查 | true | |
yarn.nodemanager.disk-health-checker.disk-free-space-threshold.enabled | 开启磁盘最小空间健康检查 | true | |
yarn.nodemanager.disk-health-checker.interval-ms | 健康检查执行频率 | 120000 ms | |
yarn.nodemanager.disk-health-checker.min-healthy-disks | 磁盘健康比例,低于该值则被标记不健康,按照默认比例计算比如5块盘,坏了4块就会标记为不健康 | 0.25 | |
yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage | 最大磁盘使用率,高于该值则被标记不健康 | 90 | |
yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb | 磁盘可用空间低于该值标记为不健康状态 | 0mb | |
yarn.nodemanager.disk-health-checker.min-free-space-per-disk-watermark-high-mb | 磁盘可用空间高于该值标记为健康 | 0mb | 一般不用 |
网友评论