每个NodeManager都有健康检测机制,将检测结果通过心跳机制汇报给ResourceManager,ResourceManager会更新NodeManager状态。如果NodeManager处于Unhealthy状态,则ResourceManager不会给这个NodeManager分配任务,直到NodeManager恢复正常
一、检测机制
1、脚本检测
2、本地目录检测
3、磁盘使用率检测
二、脚本检测
管理员可以编写用于检测NodeManager健康状态的脚本,脚本出现以下几种情况则认为NodeManager Unhealthy
1、脚本输出包含以"ERROR"开头的字符串,不管是一个还是多个都算
2、执行脚本的时候出现超时
3、执行脚本出现异常
涉及的参数,配置于yarn-site.xml
1、yarn.nodemanager.health-checker.script.path:健康检测脚本的路径,默认为空
2、yarn.nodemanager.health-checker.script.opts:健康检测脚本的输入参数,如果有多个请使用空格分割。
3、yarn.nodemanager.health-checker.interval-ms:健康检测脚本的运行间隔,默认是10分钟运行一次
4、yarn.nodemanager.health-checker.script.timeout-ms:健康检测脚本运行超时时间,默认为20分钟,运行时间超过该时间则认为不健康
三、本地目录检测
检测的目录主要是yarn.nodemanager.local-dirs和yarn.nodemanager.log-dirs参数指定的目录,这两个目录分别用于存储应用程序运行的中间结果和日志文件存放目录列表。
健康判断标准:NodeManager是否对这个目录可读、可写、可执行。
涉及的参数,配置于yarn-site.xml
1、yarn.nodemanager.local-dirs:默认为${hadoop.tmp.dir}/nm-local-dir,hadoop.tmp.dir配置于core-site.xml中
2、yarn.nodemanager.log-dirs:默认为${yarn.log.dir}/userlogs,yarn.log.dir等于${YARN_LOG_DIR},在yarn-env.sh中export YARN_LOG_DIR=xxx指定
3、yarn.nodemanager.disk-health-checker.interval-ms:本地目录健康检测间隔,默认值为2分钟
4、yarn.nodemanager.disk-health-checker.enable:是否启用本地目录健康检测,默认值是启用
5、yarn.nodemanager.disk-health-checker.min-healthy-disks:默认为0.25,正常目录数目相对于总目录总数的比例,低于这个值则认为此节点处于不正常状态。
四、磁盘使用率检测
当磁盘空间使用率超过一定阈值时,NodeManager会向ResourceManager报告Unhealthy状态
yarn.nodemanager.disk-health-checker.min-healthy-disks:默认值为90.0