编程语言
首页 > 编程语言> > NodeManager节点自身健康状态检测机制

NodeManager节点自身健康状态检测机制

作者:互联网

NodeManager节点自身健康状态检测机制

过往记忆 过往记忆大数据
本文原文:https://www.iteblog.com/archives/2168.html,如微信阅读格式错乱,请点击下面 阅读原文 进行阅读。

每个 NodeManager 节点内置提供了检测自身健康状态的机制(详情参见 NodeHealthCheckerService);通过这种机制,NodeManager 会将诊断出来的监控状态通过心跳机制汇报给 ResourceManager,然后ResourceManager 端会通过 RMNodeEventType.STATUS_UPDATE 更新 NodeManager 的状态;如果此时的 NodeManager 节点不健康,那么 ResourceManager 将会把 NodeManager 状态变为 NodeState.UNHEALTHY 。关于 NodeManager 的状态之间的转移请参见NodeManager生命周期介绍。这种内置的健康检测机制主要包括以下两种:

每个 NodeManager 上都有一个名为 NodeHealthScriptRunner 的类,其会启动一个名为 NodeHealthMonitor-Timer 的 Timer 定期执行(默认每个十分钟实行一次,由参 yarn.nodemanager.health-checker.interval-ms 指定)用户编写的用于检测 NodeManager 健康状态的脚本,这个脚本是通过参数 yarn.nodemanager.health-checker.script.path 指定的。一旦发现以下几种结果则认为节点处于不健康状态:

下面是一个简单的健康检测的脚本(假设脚本的保存路径为/user/iteblog/check_memory_usage.sh),如果内存的使用率达到了 95% 以上,则认为此节点处于不健康的状况:
NodeManager节点自身健康状态检测机制
然后我们可以在 NodeManager 进行如下配置:

NodeManager节点自身健康状态检测机制

本地目录健康检测

除了管理员提供的健康检测脚本之外,NodeManager 还提供了检测磁盘好坏的机制。检测的磁盘目录主要是 yarn.nodemanager.local-dirs 和 yarn.nodemanager.log-dirs 参数指定的目录,这两个目录分别用于存储应用程序运行的中间结果,比如MapReduce作业中Map Task的中间输出结果)和日志文件存放目录列表。这两个参数都可以配置多个目录,多个目录之间使用逗号分隔。如果这两个参数配置的目录不可用的比例达到一定的设置,则认为该节点不健康。某个目录可不可用的定义是:运行 NodeManager 节点的进程是否对这个目录可读、可写、可执行。如果这些条件都满足,这个目录则健康,否则该目录就被放入 failedDirs 列表里面。本地目录健康检测主要涉及到以下几个参数:

标签:检测,yarn,节点,健康,nodemanager,NodeManager
来源: https://blog.51cto.com/15127589/2680627