ResourceManager剖析

一:概述

1.1 ResourceManager基本職能

  1. ResourceManager需通過兩個RPC協(xié)議與NodeManager和ApplicationMaster交互矫渔,具體如下:

    • ResourceTracker:NodeManager通過該RPC協(xié)議向ResourceManager注冊狮荔、匯報節(jié)點健康狀況和Container運行狀態(tài),并領(lǐng)取ResourceManager下達(dá)的命令术羔,這些命令包括重新初始化挎挖、清理Container等,在該RPC協(xié)議中,NodeManager與ResourceManager之間采用了“pull模型”肄梨,NodeManager總是周期性地主動向ResourceManager發(fā)起請求,并通過心跳應(yīng)答領(lǐng)取下達(dá)給自己得命令
    • ApplicationMasterProtocol:應(yīng)用程序的ApplicationMaster通過該RPC協(xié)議向ResourceManager注冊挠锥、申請資源和釋放資源
    • ApplicationClientProtocol:應(yīng)用程序的客戶端通過該RPC協(xié)議向ResourceManager提交應(yīng)用程序众羡、查詢應(yīng)用程序狀態(tài)和控制應(yīng)用程序(比如殺死應(yīng)用程序和修改應(yīng)用程序優(yōu)先級)等
    • ContainerManagementProtocol:ApplicationMaster通過該RPC協(xié)議要求NodeManager啟動、停止Container和獲得Containers的狀態(tài)
  2. 概括起來蓖租,ResourceManager主要完成以下幾個功能:

    • 與客戶端交互粱侣,處理來自客戶端的請求
    • 啟動和管理ApplicationMaster,并在它運行失敗時重新啟動它蓖宦;資源管理和調(diào)度齐婴,接收來自ApplicationMaster的資源申請請求,并為之分配資源
    • 管理NodeManager稠茂,接收來自NodeManager的資源匯報信息柠偶,并向NodeManager下達(dá)管理指令(比如殺死Container等)

1.2 ResourceManager內(nèi)部架構(gòu)

  1. ResourceM主要由以下幾個部分組成
    • 用戶交互模塊:ResourceManager分別針對普通用戶、管理員和Web提供了三種對外服務(wù)睬关,具體實現(xiàn)分別對應(yīng)ClientRMService诱担、AdminService和WebApp
      • ClientRMService:ClientRMService是為普通用戶提供的服務(wù),它處理來自客戶端的各種RPC請求电爹,比如提交應(yīng)用程序蔫仙、終止應(yīng)用程序、獲取應(yīng)用程序狀態(tài)
      • AdminService:ResourceManager為管理員提供了一套獨立的服務(wù)接口藐不,以防止大量普通用戶請求使管理員發(fā)送的管理命令餓死匀哄,管理員可通過這些接口管理集群秦效,比如動態(tài)更新節(jié)點列表、更新ACL列表涎嚼、更新隊列信息等
      • WebApp:為了更加友好地展示集群資源使用情況和應(yīng)用程序運行狀態(tài)等信息阱州。YARN對外提供了一個Web界面
    • NM管理模塊
      • NMLivelineMonitor:監(jiān)控NM是否活著,如果一個NodeManager在一定時間(默認(rèn)為10min)未匯報心跳信息法梯,則認(rèn)為它死掉了苔货,需要將其從集群中移除
      • NodesListManager:維護(hù)正常節(jié)點和異常節(jié)點列表,管理exclude(類似于黑名單)和include(類似于白名單)節(jié)點列表立哑,這兩個列表均是在配置文件中設(shè)置的夜惭,可以動態(tài)加載
      • ResourceTrackerService:處理來自NodeManager的請求,主要包括注冊和心跳兩種铛绰,其中诈茧,注冊是NodeManager啟動時發(fā)生的行為,請求包中包含節(jié)點的ID捂掰、可用的資源上線等信息敢会;而心跳是周期性行為,包括各個Container運行狀態(tài)这嚣、運行的各個Application列表鸥昏、節(jié)點健康狀況(可通過一個腳本設(shè)置)等信息,作為請求的應(yīng)答姐帚,ResourceTrackerService可為NodeManager返回待釋放的Container列表吏垮、Application列表等信息
    • AM管理模塊
      • AMLivelinessMonitor:監(jiān)控AM是否活著,如果一個ApplicationMaster在一定時間(默認(rèn)為10min)內(nèi)未匯報心跳信息罐旗,則認(rèn)為它死掉了膳汪,它上面所有正在運行的Container將被置為失敗狀態(tài),而AM本身被重新分配到另外一個節(jié)點上(用戶可指定每個ApplicationMaster的嘗試次數(shù)尤莺,默認(rèn)是2)執(zhí)行
      • ApplicationMasterLauncher:與某個NodeManager通信旅敷,要求它為某個應(yīng)用程序啟動ApplicationMaster
      • ApplicationMasterService(AMS):處理來自ApplicationMaster的請求,主要包括注冊和心跳兩種請求颤霎,其中,注冊是ApplicationMaster啟動時發(fā)生的行為涂滴,注冊請求包中包含ApplicationMaster啟動節(jié)點友酱;對外的RPC端口號和tracking URL等信息;而心跳則是周期性行為柔纵,匯報信息包含所需資源描述缔杉、待釋放的Container列表、黑名單列表等搁料,而AMS則為之返回新分配的Container或详、失敗的Container系羞、待搶占的Container列表等信息
    • Application管理模塊
      • ApplicationACLsManager:管理應(yīng)用程序訪問權(quán)限,包含兩部分權(quán)限:查看權(quán)限和修改權(quán)限霸琴。查看權(quán)限主要用于查看應(yīng)用程序基本信息椒振,而修改權(quán)限則主要用于修改應(yīng)用程序優(yōu)先級、殺死應(yīng)用程序等
      • RMAppManager:管理應(yīng)用程序的啟動和關(guān)閉
      • ContainerAllocationExpirer:當(dāng)AM收到RM新分配的一個Container后梧乘,必須在一定時間(默認(rèn)為10min)內(nèi)在對應(yīng)的NM上啟動該Container澎迎,否則RM將強制回收該Container,而一個已經(jīng)分配的Container是否該被回收則是由ContainerAllocationExpirer決定和執(zhí)行的
    • 狀態(tài)機(jī)管理模塊
      • RMApp:RMApp維護(hù)了一個應(yīng)用程序(Application)的整個運行周期选调,包括從啟動到運行結(jié)束整個過程夹供。由于一個Application的生命周期可能會啟動多個Application運行實例(Application Attempt),因此可認(rèn)為仁堪,RMApp維護(hù)的是同一個Application啟動的所有實例的生命周期
      • RMAppAttempt:一個應(yīng)用程序可能啟動多個實例哮洽,即一個實例運行失敗后,可能再次啟動一個重新運行弦聂,而每次啟動稱為一次運行嘗試(或者“運行實例”)鸟辅,用“RMAppAttempt”描述,RMAppAttempt維護(hù)了一次運行嘗試的整個生ing周期
      • RMContainer:RMContainer維護(hù)了一個Container的運行周期横浑,包括從創(chuàng)建到運行結(jié)束整個過程剔桨。目前YARN尚不支持Container重用,一個Container用完后會立刻釋放徙融,將來可能會增加Container重用機(jī)制
      • RMNode:RMNode維護(hù)了一個NodeManager的生命周期洒缀,包括啟動到運行結(jié)束整個過程
    • 安全管理模塊:ResourceManager自帶了非常全面的權(quán)限管理機(jī)制
    • 資源分配模塊:該模塊主要涉及一個組件——ResourceScheduler。ResourceScheduler是資源調(diào)度器欺冀,它按照一定的約束條件(比如隊列容量限制等)將集群中的資源分配給各個應(yīng)用程序树绩,當(dāng)前主要考慮內(nèi)存和CPU資源。ResourceScheduler是一個插拔式模塊隐轩,YARN自帶了一個批處理資源調(diào)度器——FIFO和兩個多用戶調(diào)度器——Fair Scheduler和Capacity Scheduler

參考:《Hadoop 技術(shù)內(nèi)幕:深入解析 YARN 架構(gòu)設(shè)計與實現(xiàn)原理》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饺饭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子职车,更是在濱河造成了極大的恐慌瘫俊,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悴灵,死亡現(xiàn)場離奇詭異扛芽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)积瞒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進(jìn)店門川尖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茫孔,你說我怎么就攤上這事叮喳”环迹” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵馍悟,是天一觀的道長畔濒。 經(jīng)常有香客問我,道長赋朦,這世上最難降的妖魔是什么篓冲? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮宠哄,結(jié)果婚禮上壹将,老公的妹妹穿的比我還像新娘。我一直安慰自己毛嫉,他們只是感情好诽俯,可當(dāng)我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著承粤,像睡著了一般暴区。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辛臊,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天仙粱,我揣著相機(jī)與錄音,去河邊找鬼彻舰。 笑死伐割,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的刃唤。 我是一名探鬼主播隔心,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼尚胞!你這毒婦竟也來了硬霍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤笼裳,失蹤者是張志新(化名)和其女友劉穎唯卖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躬柬,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡耐床,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了楔脯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡胯甩,死狀恐怖昧廷,靈堂內(nèi)的尸體忽然破棺而出堪嫂,到底是詐尸還是另有隱情,我是刑警寧澤木柬,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布皆串,位于F島的核電站,受9級特大地震影響眉枕,放射性物質(zhì)發(fā)生泄漏恶复。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一速挑、第九天 我趴在偏房一處隱蔽的房頂上張望谤牡。 院中可真熱鬧,春花似錦姥宝、人聲如沸翅萤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽套么。三九已至,卻和暖如春碳蛋,著一層夾襖步出監(jiān)牢的瞬間胚泌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工肃弟, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留玷室,地道東北人。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓愕乎,卻偏偏與公主長得像阵苇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子感论,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,658評論 2 350

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