一、介紹
默認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重啟后恢復之前的運行狀態