3. 监控 NodeManager 的健康状况

Hadoop 提供了一种机制,管理员可以配置 NodeManager 来运行提供脚本定期确认一个节点是否健康。

管理员可以通过在脚本中执行检查来判断该节点是否处于健康状态。如果脚本检查到节点不健康,可以打印一个标准的 ERROR(错误)输出。NodeManager 通过一些脚本定期检查他的输出,如果脚本输出有 ERROR信息,如上所述,该节点将报告为不健康,就将节点加入到 ResourceManager 的黑名单列表中,则任务不会分配到该节点中。然后 NodeManager 继续跑这个脚本,所以如果 Node 节点变为健康了,将自动的从 ResourceManager 的黑名单列表删除,节点的健康状况随着脚本的输出,如果变为不健康,在 ResourceManager web 接口上对管理员来说是可用的。这个时候节点的健康状况不会显示在web接口上。

etc/hadoop/yarn-site.xml下,可以控制节点的健康检查脚本:

参数取值备注
yarn.nodemanager.health-checker.script.pathNode health script这个脚本检查节点的健康状态。
yarn.nodemanager.health-checker.script.optsNode health script options检查节点的健康状态脚本选项
yarn.nodemanager.health-checker.script.interval-msNode health script interval运行健康脚本的时间间隔
yarn.nodemanager.health-checker.script.timeout-msNode health script timeout interval健康脚本的执行超时时间

如果只是本地硬盘坏了,健康检查脚本将不会设置该节点为 ERROR。但是NodeManager 有能力来定期检查本地磁盘的健康(检查 nodemanager-local-dirs 和 nodemanager-log-dirs 两个目录),当达到yarn.nodemanager.disk-health-checker.min-healthy-disks 设置的阀值,则整个节点将标记为不健康。