YARN学习总结-第八节-YARN节点管理

NodeManager

NodeManager会执行健康检查,可以是检查磁盘或者任意用户指定的检查脚本,如果检查失败,则标记此节点为unhealthy并且报告给ResourceManager,然后停止分配容器到此节点。

磁盘检查

磁盘检查两个目录(local-dirs和log-dirs)分别由yarn.nodemanager.local-dirs和yarn.nodemanager.log-dirs指定,检查包括权限和磁盘空间剩余量。同时检查文件系统不是只读状态。默认检查间隔时间为2Min,如果磁盘检查失败,NodeManager停止使用那部分磁盘,仍旧报告节点状态为healthy。如果许多磁盘检查失败,检查的磁盘数量可以配置,则报告节点状态为unhealthy,并且新的容器不会被调度到这个节点上。

下面的配置参数可以用于修改磁盘检查:

yarn.nodemanager.disk-health-checker.enable:是否开启磁盘健康检查。

yarn.nodemanager.disk-health-checker.interval-ms:磁盘检查间隔。

yarn.nodemanager.disk-health-checker.min-healthy-disks:浮点数,0-1之间,默认为0.25,必须通过多少检查,才认为是healthy

yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage:浮点数,0-100之间,默认值为90,磁盘被标记为unhealthy之前的最大使用率。

yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb:默认值为0。

扩展检查脚本

用户可以指定自己的健康检查脚本,它会被健康检查服务调起。用户也可以指定一个超时时间。如果脚本以非0码退出,超时,或者结果抛出异常,则节点被标记为unhealthy。如果因为权限或者不正确的路径,脚本不能执行,它会被标记为失败。指定健康检查脚本是必须的。如果没有健康检查脚本,则只有磁盘检查,确定节点的状态。

可以通过下面的参数配置健康检查。

yarn.nodemanager.health-checker.interval-ms:检查间隔,单位为毫秒,默认值为10min

yarn.nodemanager.health-checker.script-timeout-ms:健康检查脚本的超时时间,默认为20min

yarn.nodemanager.health-checker.script.path:脚本路径

yarn.nodemanager.health-checker.script.opts:脚本选项。

NodeManager Restart

在不丢失已经运行的激活的容器重启NodeManager。默认,NM存储必要的state在一个local state-store。当NM重启时,它会加载这些文件,然后进行恢复。

Step 1.开启NM Restart 功能:

yarn.nodemanager.recovery.enabled

Step 2.配置NM存储状态文件的本地目录

yarn.nodemanager.recovery.dir:默认值为$hadoop.tmp.dir/yarn-nm-recovery

Step 3.配置一个对于NodeManager合法的RPC地址

yarn.nodemanager.address:

Step 4. Auxilliary services

在YARN集群中,NodeManager可以被配置为运行auxilliary services,对于一个完整功能的NM restart,YARN依赖任何辅助服务支持恢复。

一个简单的例子是ShuffleHandler for MapReduce。

Auxiliary Service Classpath Isolation

如果需要运行辅助服务,系统管理员需要把jar包直接放置到NodeManager的类路径。如果存在多版本,则无法控制哪个版本会被加载。如果辅助服务和节点管理器存在依赖冲突,则会使辅助服务和节点管理器同时崩溃。为了解决这个问题,我们可以设置辅助服务使用单独的类路径。

在yarn-site.xml中配置下列选项。

yarn.nodemanager.aux-services.%s.classpath:指定本地jar和依赖jar的目录

yarn.nodemanager.aux-services.%s.remote-classpath:指定远程jar和依赖jar的目录

yarn.nodemanager.aux-service.%s.system-classes:

配置案例:


	yarn.nodemanager.aux-services
	mapreduce_shuffle,CustomAuxService



	yarn.nodemanager.aux-services.CustomAuxService.classpath
	${local_dir_to_jar}/CustomAuxService.jar





	yarn.nodemanager.aux-services.CustomAuxService.class
	org.aux.CustomAuxService



	yarn.nodemanager.aux-services.mapreduce_shuffle.class
	org.apache.hadoop.mapred.ShuffleHandler

 

你可能感兴趣的:(大数据)