ResourceManager學(xué)習(xí)之ApplicationMaster,NodeManager管理

ApplicationMaster管理部分主要由三個(gè)服務(wù)構(gòu)成枷莉,分別是ApplicationMasterLauncher举瑰、AMLivelinessMonitor和ApplicationMasterService榨崩,它們共同管理應(yīng)用程序的ApplicationMaster的生命周期

ApplicationMasterLauncher削解、AMLivelinessMonitor和ApplicationMasterService這三個(gè)組件是如何協(xié)同管理ApplicationMaster生命周期把夸,介紹從ResourceManager獲得資源啟動(dòng)ApplicationMaster :

  1. 用戶向YARN ResourceManager提交應(yīng)用程序旁舰,ResourceManager收到提交請(qǐng)求后锋华,先向資源調(diào)度器申請(qǐng)用以啟動(dòng)ApplicationMaster的資源,待申請(qǐng)到資源后箭窜,再由ApplicationMasterLauncher與對(duì)應(yīng)的NodeManager通信毯焕,從而啟動(dòng)應(yīng)用程序的ApplicationMaster
  2. ApplicationMaster啟動(dòng)完成后,ApplicationMasterLauncher會(huì)通過(guò)事件的形式磺樱,將剛剛啟動(dòng)的ApplicationMaster注冊(cè)到AMLivelinessMonitor纳猫,以啟動(dòng)心跳監(jiān)控
  3. ApplicationMaster啟動(dòng)后,先向ApplicationMasterService注冊(cè)竹捉,并將自己所在host芜辕、端口號(hào)等信息匯報(bào)給它
  4. ApplicationMaster運(yùn)行過(guò)程中,周期性地向ApplicationMasterService匯報(bào)心跳信息
  5. ApplicationMasterService每次收到ApplicationMaster的心跳信息后块差,將通知AMLivelinessMonitor更新該應(yīng)用程序的最近匯報(bào)心跳的時(shí)間
  6. 當(dāng)應(yīng)用程序運(yùn)行完成后侵续,ApplicationMaster向ApplicationMasterService發(fā)送請(qǐng)求,注銷自己
  7. ApplicationMasterService收到注銷請(qǐng)求后憾儒,標(biāo)注應(yīng)用程序運(yùn)行狀態(tài)為完成询兴,同時(shí)通知AMLivelinessMonitor移除對(duì)它的心跳監(jiān)控

介紹三個(gè)服務(wù)

(1) ApplicationMasterLauncher

ApplicationMasterLauncher即是一個(gè)服務(wù),也是一個(gè)事件處理器起趾,它處理AMLauncherEvent類型的事件诗舰,該類型事件有兩種,分別是請(qǐng)求啟動(dòng)一個(gè)ApplicationMaster的"LAUNCH"事件和請(qǐng)求清理一個(gè)ApplicationMaster的"CLEANUP"事件训裆。ApplicationMasterLauncher維護(hù)了一個(gè)線程池眶根,從而能夠盡快地處理這兩種事件

  • 如果ApplicationMasterLauncher收到了"LAUNCH"類型的事件,它會(huì)與對(duì)應(yīng)的NodeManager通信边琉,要求它啟動(dòng)ApplicationMaster属百。整個(gè)過(guò)程比較簡(jiǎn)單,首先創(chuàng)建一個(gè)ContainerManagementProtocol協(xié)議的客戶端变姨,然后向?qū)?yīng)的NodeManager發(fā)起連接請(qǐng)求族扰,接著將啟動(dòng)AM所需的各種信息,包括啟動(dòng)命令、JAR包渔呵、環(huán)境變量等信息怒竿,封裝成一個(gè)StartContainerRequest對(duì)象,然后通過(guò)RPC函數(shù)ContainerManagementProtocol#startContainer發(fā)送給對(duì)應(yīng)的NM
  • 如果ApplicationMasterLauncher收到了"CLEANUP"類型的事件扩氢,它與對(duì)應(yīng)的NodeManager通信耕驰,要求它殺死ApplicationMaster。整個(gè)過(guò)程與啟動(dòng)AM的過(guò)程類似

(2) AMLivelinessMonitor

該服務(wù)周期性遍歷所有應(yīng)用程序的ApplicationMaster录豺,如果一個(gè)ApplicationMaster在一定時(shí)間內(nèi)未匯報(bào)心跳信息朦肘,則認(rèn)為它死掉了,它上面所有正在運(yùn)行的Container將被置為運(yùn)行失斔ⅰ媒抠;如果AM運(yùn)行失敗,則由RM重新為它申請(qǐng)資源兢哭,以便能夠重新分配到另外一個(gè)節(jié)點(diǎn)上執(zhí)行

(3) ApplicationMasterService

ApplicationMasterService實(shí)現(xiàn)了RPC協(xié)議ApplicationMasterProtocol领舰,負(fù)責(zé)處理來(lái)自ApplicationMaster的請(qǐng)求夫嗓,請(qǐng)求主要包括注冊(cè)迟螺、心跳和清理三種,其中舍咖,注冊(cè)是ApplicationMaster啟動(dòng)時(shí)發(fā)生的行為矩父,請(qǐng)求包中包含AM所在節(jié)點(diǎn)、RPC端口號(hào)和tracking URL等信息排霉;心跳是周期性行為窍株,包含請(qǐng)求資源的類型描述、待釋放的Container列表等攻柠,而AMS為之返回新分配的Container球订、失敗的Container等信息;清理是應(yīng)用程序運(yùn)行結(jié)束時(shí)發(fā)生的行為瑰钮,ApplicationMaster向RM發(fā)送清理應(yīng)用程序的請(qǐng)求冒滩,以回收資源和清理各種內(nèi)存空間

ApplicationMasterLauncher啟動(dòng)AM后,AM做的第一件事是向RM注冊(cè)浪谴,這是通過(guò)RPC函數(shù)ApplicationMasterProtocol#registerApplicationMaster實(shí)現(xiàn)的

AM運(yùn)行過(guò)程中开睡,需要周期性地通過(guò)RPC函數(shù)ApplicationMasterProtocol#allocate與RM通信,這主要有以下三個(gè)作用 :

  • 請(qǐng)求資源
  • 獲取新分配的資源
  • 形成周期性心跳苟耻,告訴RM自己還活著

AM運(yùn)行結(jié)束后篇恒,需要通過(guò)RPC函數(shù)ApplicationMasterProtocol#finishApplicationMaster告訴RM自己運(yùn)行結(jié)束,可以回收資源和清理各種數(shù)據(jù)結(jié)果了


NodeManager管理部分主要由三個(gè)服務(wù)構(gòu)成凶杖,分別是NMLivelinessMonitor胁艰,NodesListManager和ResourceTrackerService,它們共同管理NodeManager的生命周期

介紹三個(gè)服務(wù)

(1) NMLivelinessMonitor

該服務(wù)周期性的遍歷集群中所有NodeManager,如果一個(gè)NodeManager在一定時(shí)間內(nèi)未匯報(bào)心跳信息腾么,則認(rèn)為它死掉了醋虏,它上面所有正在運(yùn)行的Container將被置為運(yùn)行失敗。需要注意的是哮翘,RM不會(huì)重新執(zhí)行這些Container颈嚼,它只會(huì)通過(guò)心跳機(jī)制告訴對(duì)應(yīng)的AM,由AM決定是否重新執(zhí)行饭寺。如果需要阻课,則AM重新向RM申請(qǐng)資源,然后由AM與對(duì)應(yīng)的NodeManager通信以重新運(yùn)行失敗的Container

(2) NodesListManager

NodesListManager管理exlude(類似于黑名單)和inlude(類似于白名單)節(jié)點(diǎn)列表艰匙,這兩個(gè)列表所在的文件分別可通過(guò)yarn.resourcemanager.nodes.include-path和yarn.resourcemanager.nodes.exclude-path配置限煞,其中,exlude節(jié)點(diǎn)列表可認(rèn)為是黑名單员凝,它們不允許直接與RM通信署驻,而inlude節(jié)點(diǎn)列表可認(rèn)為是白名單。默認(rèn)情況下健霹,這兩個(gè)列表均為空旺上,表示任何節(jié)點(diǎn)均被允許接入RM。需要注意的是糖埋,管理員可通過(guò)命令"bin/yarn rmadmin -refreshNodes"動(dòng)態(tài)加載這兩個(gè)文件

(3) ResourceTrackerService

ResourceTrackerService實(shí)現(xiàn)了RPC協(xié)議ResourceTracker宣吱,負(fù)責(zé)處理來(lái)自各個(gè)NodeManager的請(qǐng)求,請(qǐng)求主要包括注冊(cè)和心跳兩種瞳别,其中征候,注冊(cè)是NodeManager啟動(dòng)時(shí)發(fā)生的行為,請(qǐng)求包中包含節(jié)點(diǎn)ID祟敛,可用的資源上限等信息疤坝;而心跳時(shí)周期性行為,包含各個(gè)Container運(yùn)行狀態(tài)馆铁,運(yùn)行的Application列表跑揉,節(jié)點(diǎn)健康狀況,而ResourceTrackerService則為NM返回待釋放的Container列表叼架、Application列表等

NM啟動(dòng)時(shí)畔裕,它所作的第一件事是向RM注冊(cè),這是通過(guò)RPC函數(shù)ResourceTracker#registerNodeManager實(shí)現(xiàn)的乖订,注冊(cè)信息包括節(jié)點(diǎn)可用資源總量扮饶,對(duì)外開(kāi)放的HTTP端口號(hào)等

NM啟動(dòng)后,他會(huì)周期性地通過(guò)RPC函數(shù)ResourceTracker#nodeHeartbeat匯報(bào)心跳乍构,心跳信息包含各個(gè)Container運(yùn)行狀態(tài)甜无,運(yùn)行的Application列表扛点,節(jié)點(diǎn)健康狀況等信息,而RM則為之返回需要釋放的Container列表岂丘,Application列表等

我每天會(huì)寫文章記錄大數(shù)據(jù)技術(shù)學(xué)習(xí)之路,另外我自己整理了些大數(shù)據(jù)的學(xué)習(xí)資料,目前全部放在我的公眾號(hào)"SmallBird技術(shù)分享",加入我們一起學(xué)習(xí)交流,并且回復(fù)'分享'會(huì)有大數(shù)據(jù)資源驚喜等著你~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陵究,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奥帘,更是在濱河造成了極大的恐慌铜邮,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寨蹋,死亡現(xiàn)場(chǎng)離奇詭異松蒜,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)已旧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門秸苗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人运褪,你說(shuō)我怎么就攤上這事惊楼。” “怎么了秸讹?”我有些...
    開(kāi)封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵檀咙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我嗦枢,道長(zhǎng)攀芯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任文虏,我火速辦了婚禮,結(jié)果婚禮上殖演,老公的妹妹穿的比我還像新娘氧秘。我一直安慰自己,他們只是感情好趴久,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布丸相。 她就那樣靜靜地躺著,像睡著了一般彼棍。 火紅的嫁衣襯著肌膚如雪灭忠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天座硕,我揣著相機(jī)與錄音弛作,去河邊找鬼。 笑死华匾,一個(gè)胖子當(dāng)著我的面吹牛映琳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼萨西,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼有鹿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起谎脯,我...
    開(kāi)封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤葱跋,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后源梭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體年局,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年咸产,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了矢否。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脑溢,死狀恐怖僵朗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情屑彻,我是刑警寧澤验庙,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站社牲,受9級(jí)特大地震影響粪薛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搏恤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一违寿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧熟空,春花似錦藤巢、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至迈喉,卻和暖如春绍刮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挨摸。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工跟继, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逆趣,地道東北人铛纬。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像刨裆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子彬檀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容