3. 监控 NodeManager 的健康状况
Hadoop 提供了一种机制,管理员可以配置 NodeManager 来运行提供脚本定期确认一个节点是否健康。
管理员可以通过在脚本中执行检查来判断该节点是否处于健康状态。如果脚本检查到节点不健康,可以打印一个标准的 ERROR(错误)输出。NodeManager 通过一些脚本定期检查他的输出,如果脚本输出有 ERROR信息,如上所述,该节点将报告为不健康,就将节点加入到 ResourceManager 的黑名单列表中,则任务不会分配到该节点中。然后 NodeManager 继续跑这个脚本,所以如果 Node 节点变为健康了,将自动的从 ResourceManager 的黑名单列表删除,节点的健康状况随着脚本的输出,如果变为不健康,在 ResourceManager web 接口上对管理员来说是可用的。这个时候节点的健康状况不会显示在web接口上。
在etc/hadoop/yarn-site.xml
下,可以控制节点的健康检查脚本:
参数 | 取值 | 备注 |
---|---|---|
yarn.nodemanager.health-checker.script.path | Node health script | 这个脚本检查节点的健康状态。 |
yarn.nodemanager.health-checker.script.opts | Node health script options | 检查节点的健康状态脚本选项 |
yarn.nodemanager.health-checker.script.interval-ms | Node health script interval | 运行健康脚本的时间间隔 |
yarn.nodemanager.health-checker.script.timeout-ms | Node health script timeout interval | 健康脚本的执行超时时间 |
如果只是本地硬盘坏了,健康检查脚本将不会设置该节点为 ERROR。但是NodeManager 有能力来定期检查本地磁盘的健康(检查 nodemanager-local-dirs 和 nodemanager-log-dirs 两个目录),当达到yarn.nodemanager.disk-health-checker.min-healthy-disks 设置的阀值,则整个节点将标记为不健康。