一、介绍
默认Yarn NodeManager重启后会断开所有当前正在运行的container的状态,这意味着重启后需要重新启动container进程,该特性的作用就是把NM的状态临时保存到本地,重启后从之前的状态恢复运行。
二、配置
配置以下三个参数到conf/yarn-site.xml中
1、yarn.nodemanager.recovery.enabled
默认为false,设置为true启用特性
2、yarn.nodemanager.recovery.dir
默认为$hadoop.tmp.dir/yarn-nm-recovery,NM保存container状态的本地目录
3、yarn.nodemanager.address
默认${yarn.nodemanager.hostname}:0,即随机使用临时端口,官方解释是"The address of the container manager in the NM"。NodeManager不能对RPC server使用临时端口,因为NM在重启后会更换端口,会打断重启前的container与NodeManager的连接,设置后可以固定使用同一个的端口。
三、总结
为NodeManager配置辅助服务,yarn依赖于辅助服务来支持container恢复,通常避免使用临时的端口,这样的话,重启前的container不会因为端口变化而失去container的连接。
MR的ShuffleHandler就是辅助服务的一个例子,ShuffleHandler涉及到上面的条件,所以用户或者管理员不需要对MR做任何事来满足NM restart功能:
a、mapreduce.shuffle.port参数控制了NodeManager节点上的哪个端口与ShuffleHandler进行绑定
b、ShuffleHandler已经支持在NodeManager重启后恢复之前的运行状态