Yarn源代码分析之旅---NodeManager---健康检查
2014-02-20 07:10
281 查看
概述
在NodeManager的初始化的时候,我们会看到如下代码:nodeHealthChecker = new NodeHealthCheckerService();
addService(nodeHealthChecker);
这段代码为NM添加了一个服务,用于通过周期性的运行一个自定义脚本(由组件NodeHealthScriptRunner完成)和向磁盘写文件(由服务LocalDirsHandlerService完成)检查节点的健康状态。然后并通过ResourceTrackerProtocol向RM报告自己的健康状况。NodeHealthCheckerService本身并不提供有用的功能,内部主要靠NodeHealthScriptRunner以及LocalDirsHandlerService完成。
NodeHealthScriptRunner
配置项yarn.nodemanager.health-checker.script.path的值,是一个可执行脚本的绝对地址, 如果此配置项没有值,则NodeHealthScriptRunner服务不会被添加并启动;如果有值,并且文件真实存在而且有权限能够访问的话,此服务会被添加到服务列表。服务初始化的时候,会初始化脚本的地址,执行的时间间隔,超时时间以及运行时的参数,这些都是定义在配置文件yarn-site.xml中的,最后定义了一个Timer:NodeHealthMonitorExecutor来具体执行脚本。服务启动后,会定期通过ShellCommandExecutor来运行脚本,然后得到脚本的输出,如果发现是ERROR开头的,则说明NM现在处于不健康的状态(还有一些别的状态,在此不一一说明),如果是OK开头,则说明NM是健康的。
NM每次跟RM心跳的时候,都会得到当前的健康状态信息,然后返回给RM,如果RM收到了不健康的状态,则会把NM放入黑名单,否则,会放入白名单。
LocalDirsHandlerService
服务初始化时,会初始化时间间隔,MonitoringTimerTask,正常磁盘比例等等信息,以及两个重要的目录,本地可用目录列表以及日志存放目录列表,这些目录直接决定只NM是否可用。所以NM作为节点的代理和管理者,应该负责检测这两类目录列表的可用性。MonitoringTimerTask启动后,会定期检查这两类目录的可用性,返回健康状态(比较磁盘比例),如果不可用,则删除不能用的目录。判断条件是具有读,写,执行权限。相关文章推荐
- Yarn设计原理分析之NodeManager
- 分析NGINX 健康检查和负载均衡机制
- nginx 健康检查和负载均衡机制分析
- nginx 健康检查和负载均衡机制分析
- NGINX 健康检查和负载均衡机制分析
- pmon 的实例健康检查处理逻辑分析
- NGINX 健康检查和负载均衡机制分析
- nginx 健康检查和负载均衡机制分析
- hadoop源代码分析之:yarn的核心设计介绍
- nginx中健康检查(health_check)机制深入分析
- Hadoop源代码分析之Configuration
- x264源代码简单分析:概述
- hostapd源代码分析(二):hostapd的工作机制
- Yarn任务提交流程(源码分析)
- 对网页游戏《卧龙吟》的分析3-----预登陆flash的源代码分析
- Play源代码分析1—Server启动过程
- Hadoop源代码分析
- PHP源代码数组统计count分析
- AngularJS的脏检查深入分析
- 说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。