ResourceManager(RM)負(fù)責(zé)跟蹤集群中的資源,并調(diào)度應(yīng)用程序(例如MapReduce作業(yè))惧盹。
在Hadoop 2.4之前,ResourceManager是紗線集群中的單一故障點(diǎn)。
高可用性特性以活動(dòng)/備用資源管理器對(duì)的形式添加冗余峡钓,以刪除此故障點(diǎn)槐雾。
原理圖
配置過(guò)程
管理命令
ResourceManger Restart
NodeManagers和客戶端在RM關(guān)閉期間將保持對(duì)RM的輪詢夭委,直到RM啟 動(dòng)。當(dāng)啟動(dòng)后,RM將通過(guò)心跳機(jī)制向正在與其會(huì)話的NodeManager和
ApplicationMasters發(fā)送同步指令株灸。目前NodeManager和ApplicationMaster 處理該指令的方式為:NodeManager將殺死它管理的所有容器然后向RM 重新注冊(cè)崇摄,對(duì)于RM來(lái)說(shuō),這些重新注冊(cè)的NodeManager與新加入的
NodeManager相似慌烧。ApplicationMasters在接收到RM的同步指令后逐抑,將會(huì) 關(guān)閉。在RM重啟后屹蚊,從狀態(tài)存儲(chǔ)中加載應(yīng)用元數(shù)據(jù)和認(rèn)證信息并放入 內(nèi)存后厕氨,RM將為每個(gè)還未完成的應(yīng)用創(chuàng)建新的嘗試。正如之前描述的
汹粤,此種方式下之前正在運(yùn)行的應(yīng)用程序的工作將會(huì)丟失命斧,因?yàn)樗鼈円呀?jīng) 被RM在重啟后使用同步指令殺死了
ResourceManager重啟可以劃分為兩個(gè)階段。
- 第一階段嘱兼,
增強(qiáng)的ResourceManager(RM)將應(yīng)用程序的狀態(tài)和其它認(rèn)證信息保存到一個(gè)插入式的狀態(tài)存儲(chǔ)中国葬。
RM重啟時(shí)將從狀態(tài)存儲(chǔ)中重新加載這些信息,然后重新開(kāi)始之前正在運(yùn)行的應(yīng) 用程序芹壕,用戶不需要重新提交應(yīng)用程序汇四。 - 第二階段,
重啟時(shí)通過(guò)從NodeManagers讀取容器的狀態(tài)和從ApplicationMasters讀取容器的請(qǐng)求踢涌,集中重構(gòu)RM的運(yùn)行狀態(tài)通孽。與第一階段不同的是,在第二階段中睁壁,之前正在運(yùn)行的應(yīng)用 程序?qū)?strong>不會(huì)在RM重啟后被殺死背苦,所以應(yīng)用程序不會(huì)因?yàn)镽M中斷而丟失工作。