Hadoop集群資源管理系統(tǒng)YARN介紹

YARN產(chǎn)生背景

MRv1的局限

YARN是在MRv1基礎(chǔ)上演化而來的,它克服了MRv1中的各種局限性帽借。在正式介紹YARN之前珠增,先了解下MRv1的一些局限性,主要有以下幾個方面:

  • 擴(kuò)展性差砍艾。在MRv1中蒂教,JobTracker同時兼?zhèn)淞?strong>資源管理和作業(yè)控制兩個功能,這成為系統(tǒng)的一個最大瓶頸辐董,嚴(yán)重制約了Hadoop集群擴(kuò)展性悴品。
  • 可靠性差。MRv1采用了master/slave結(jié)構(gòu)简烘,其中苔严,master存在單點故障問題,一旦它出現(xiàn)故障將導(dǎo)致整個集群不可用孤澎。
  • 資源利用率低届氢。MRv1采用了基于槽位的資源分配模型,槽位是一種粗粒度的資源劃分單位覆旭,通常一個任務(wù)不會用完槽位對應(yīng)的資源退子,且其他任務(wù)也無法使用這些空閑資源岖妄。此外,Hadoop將槽位分為Map Slot和Reduce Slot兩種寂祥,且不允許它們之間共享荐虐,常常會導(dǎo)致一種槽位資源緊張而另外一種閑置(比如一個作業(yè)剛剛提交時,只會運(yùn)行Map Task丸凭,此時Reduce Slot閑置)福扬。
  • 無法支持多種計算框架。隨著互聯(lián)網(wǎng)高速發(fā)展惜犀,MapReduce這種基于磁盤的離線計算框架已經(jīng)不能滿足應(yīng)用要求铛碑,從而出現(xiàn)了一些新的計算框架,包括內(nèi)存計算框架虽界、流式計算框架和迭代式計算框架等汽烦,而MRv1不能支持多種計算框架并存。

為了克服以上幾個缺點莉御,Apache開始嘗試對Hadoop進(jìn)行升級改造撇吞,進(jìn)而誕生了更加先進(jìn)的下一代MapReduce計算框架MRv2。正是由于MRv2將資源管理功能抽象成了一個獨立的通用系統(tǒng)YARN礁叔,直接導(dǎo)致下一代MapReduce的核心從單一的計算框架MapReduce轉(zhuǎn)移為通用的資源管理系統(tǒng)YARN梢夯。

集群資源統(tǒng)一管理

隨著互聯(lián)網(wǎng)的高速發(fā)展,新的計算框架不斷出現(xiàn)晴圾,從支持離線處理的MapReduce,到支持在線處理的Storm噪奄,從迭代式計算框架Spark到流式處理框架S4死姚,各種框架各有所長,各自解決了某一類應(yīng)用問題勤篮。這時候就需要一個組件對同一個集群上的不同計算框架進(jìn)行資源的統(tǒng)一管理都毒。

YARN

相比于“一種計算框架一個集群”的模式,共享集群的模式存在多種好處:

  • 資源利用率高碰缔。如果每個框架一個集群账劲,可能在某段時間內(nèi),有些計算框架的集群資源緊張金抡,而另外一些集群資源空閑瀑焦。共享集群模式則通過多種框架共享資源,使得集群中的資源得到更加充分的利用梗肝。
  • 運(yùn)維成本低榛瓮。如果采用“一個框架一個集群”的模式,則可能需要多個管理員管理這些集群巫击,進(jìn)而增加運(yùn)維成本禀晓,而共享模式通常需要少數(shù)管理員即可完成多個框架的統(tǒng)一管理精续。
  • 數(shù)據(jù)共享。隨著數(shù)據(jù)量的暴增粹懒,跨集群間的數(shù)據(jù)移動不僅需花費更長的時間重付,且硬件成本也會大大增加,而共享集群模式可讓多種框架共享數(shù)據(jù)和硬件資源凫乖,將大大減小數(shù)據(jù)移動帶來的成本确垫。

YARN基本設(shè)計思想

MRv1主要由編程模型、數(shù)據(jù)處理引擎(由Map Task和Reduce Task組成)和運(yùn)行時環(huán)境三部分組成拣凹。為了保證編程模型的向后兼容性森爽,MRv2重用了MRv1中的編程模型和數(shù)據(jù)處理引擎,但運(yùn)行時環(huán)境被完全重寫嚣镜。

MRv1的運(yùn)行時環(huán)境主要由兩類服務(wù)組成爬迟,分別是JobTracker和TaskTracker。其中菊匿,JobTracker負(fù)責(zé)資源管理作業(yè)控制付呕。TaskTracker負(fù)責(zé)單個節(jié)點資源管理和任務(wù)執(zhí)行

MRv1將資源管理和應(yīng)用程序管理兩部分混雜在一起跌捆,使得它在擴(kuò)展性徽职、容錯性和多框架支持等方面存在明顯缺陷。

而MRv2則通過將資源管理和應(yīng)用程序管理兩部分剝離開佩厚,分別由ResourceManager和ApplicationMaster負(fù)責(zé)姆钉,其中ResourceManager專管資源管理和調(diào)度,而ApplicationMaster則負(fù)責(zé)與具體應(yīng)用程序相關(guān)的任務(wù)切分抄瓦、任務(wù)調(diào)度和容錯等潮瓶,具體如下圖所示。

Paste_Image.png

YARN基本架構(gòu)

YARN是Hadoop 2.0中的資源管理系統(tǒng)钙姊,它的基本設(shè)計思想是將MRv1中的JobTracker拆分成了兩個獨立的服務(wù):一個全局的資源管理器ResourceManager每個應(yīng)用程序特有的ApplicationMaster毯辅。其中ResourceManager負(fù)責(zé)整個系統(tǒng)的資源管理和分配,而ApplicationMaster負(fù)責(zé)單個應(yīng)用程序的管理煞额。

YARN總體上仍然是Master/Slave結(jié)構(gòu)思恐,在整個資源管理框架中,ResourceManager為Master膊毁,NodeManager為Slave胀莹,ResourceManager負(fù)責(zé)對各個NodeManager上的資源進(jìn)行統(tǒng)一管理和調(diào)度。當(dāng)用戶提交一個應(yīng)用程序時媚媒,需要提供一個用以跟蹤和管理這個程序的ApplicationMaster嗜逻,它負(fù)責(zé)向ResourceManager申請資源,并要求NodeManger啟動可以占用一定資源的任務(wù)缭召。由于不同的ApplicationMaster被分布到不同的節(jié)點上栈顷,因此它們之間不會相互影響逆日。

下圖描述了YARN的基本組成結(jié)構(gòu),YARN主要由ResourceManager萄凤、NodeManager室抽、ApplicationMaster(圖中給出了MapReduce和MPI兩種計算框架的ApplicationMaster,分別為MR AppMstr和MPI AppMstr)和Container等幾個組件構(gòu)成靡努。

YARN基本架構(gòu)

接下來對YARN里幾個重要的組件一一介紹坪圾。

1. ResourceManager(RM)

RM是一個全局的資源管理器,負(fù)責(zé)整個系統(tǒng)的資源管理和分配。它主要由兩個組件構(gòu)成:調(diào)度器(Scheduler)和應(yīng)用程序管理器(Applications Manager惑朦,ASM)兽泄。

(1)調(diào)度器(分配Container)

調(diào)度器根據(jù)容量、隊列等限制條件(如每個隊列分配一定的資源漾月,最多執(zhí)行一定數(shù)量的作業(yè)等)病梢,將系統(tǒng)中的資源分配給各個正在運(yùn)行的應(yīng)用程序。需要注意的是梁肿,該調(diào)度器是一個“純調(diào)度器”蜓陌,它不再從事任何與具體應(yīng)用程序相關(guān)的工作,比如不負(fù)責(zé)監(jiān)控或者跟蹤應(yīng)用的執(zhí)行狀態(tài)等吩蔑,也不負(fù)責(zé)重新啟動因應(yīng)用執(zhí)行失敗或者硬件故障而產(chǎn)生的失敗任務(wù)钮热,這些均交由應(yīng)用程序相關(guān)的ApplicationMaster完成。調(diào)度器僅根據(jù)各個應(yīng)用程序的資源需求進(jìn)行資源分配烛芬,而資源分配單位用一個抽象概念“資源容器”(Resource Container隧期,簡稱Container)表示,Container是一個動態(tài)資源分配單位赘娄,它將內(nèi)存厌秒、CPU、磁盤擅憔、網(wǎng)絡(luò)等資源封裝在一起,從而限定每個任務(wù)使用的資源量檐晕。此外暑诸,該調(diào)度器是一個可插拔的組件,用戶可根據(jù)自己的需要設(shè)計新的調(diào)度器辟灰,YARN提供了多種直接可用的調(diào)度器个榕,比如Fair Scheduler和Capacity Scheduler等。

(2)應(yīng)用程序管理器

應(yīng)用程序管理器負(fù)責(zé)管理整個系統(tǒng)中所有應(yīng)用程序芥喇,包括應(yīng)用程序提交西采、與調(diào)度器協(xié)商資源以啟動ApplicationMaster、監(jiān)控ApplicationMaster運(yùn)行狀態(tài)并在失敗時重新啟動它等继控。

2. ApplicationMaster(AM)

用戶提交的每個應(yīng)用程序均包含一個AM械馆,主要功能包括:

  • 與RM調(diào)度器協(xié)商以獲取資源(以Container表示)
  • 將得到的任務(wù)進(jìn)一步分配給內(nèi)部的任務(wù)
  • 與NM通信以啟動/停止任務(wù)
  • 監(jiān)控所有任務(wù)運(yùn)行狀態(tài)胖眷,并在任務(wù)失敗時重新為任務(wù)申請資源以重啟任務(wù)

3. NodeManager(NM)

NM是每個節(jié)點上的資源和任務(wù)管理器。一方面霹崎,它定時地向RM匯報本節(jié)點的資源使用情況和Container運(yùn)行狀態(tài)珊搀;另一方面,它接受并處理來自AM的Container啟動/停止等各種請求尾菇。

4. Container

Container是YARN中的資源抽象境析,它封裝了某個節(jié)點上的多維資源,如CPU派诬、內(nèi)存劳淆、磁盤、網(wǎng)絡(luò)等默赂。當(dāng)AM向RM申請資源時沛鸵,RM向AM返回的資源便是用Container表示的。YARN會為每個任務(wù)分配一個Container放可,且該任務(wù)只能使用該Container中描述的資源谒臼。Container是一個動態(tài)資源劃分單位,是根據(jù)應(yīng)用程序的需求自動生成的耀里。目前蜈缤,YARN僅支持CPU和內(nèi)存兩種資源。

YARN工作流程

運(yùn)行在YARN上的應(yīng)用程序主要分為兩類:短應(yīng)用程序和長應(yīng)用程序冯挎。其中底哥,短應(yīng)用程序是指一定時間內(nèi)可運(yùn)行完成并正常退出的應(yīng)用程序,如MapReduce作業(yè)房官、Spark DAG作業(yè)等趾徽。長應(yīng)用程序是指不出意外,永不終止運(yùn)行的應(yīng)用程序翰守,通常是一些服務(wù)孵奶,比如Storm Service(包括Nimbus和Supervisor兩類服務(wù)),HBase Service(包括HMaster和RegionServer兩類服務(wù))等蜡峰,而它們本身作為一種框架提供編程接口供用戶使用了袁。盡管這兩類應(yīng)用程序作業(yè)不同,一類直接運(yùn)行數(shù)據(jù)處理程序湿颅,一類用于部署服務(wù)(服務(wù)之上再運(yùn)行數(shù)據(jù)處理程序)载绿,但運(yùn)行在YARN上的流程是相同的。

當(dāng)用戶向YARN中提交一個應(yīng)用程序后油航,YARN將分兩個階段運(yùn)行該應(yīng)用程序:第一階段是啟動ApplicationMaster崭庸。第二階段是由ApplicationMaster創(chuàng)建應(yīng)用程序,為它申請資源,并監(jiān)控它的整個運(yùn)行過程怕享,直到運(yùn)行完成执赡。具體如下:

  1. 用戶向YARN中提交應(yīng)用程序,其中包括ApplicationMaster程序熬粗、啟動ApplicationMaster的命令搀玖、用戶程序等。
  2. ResourceManager為該應(yīng)用程序分配第一個Container驻呐,并與對應(yīng)的NodeManager通信灌诅,要求它在這個Container中啟動應(yīng)用程序的ApplicationMaster。
  3. ApplicationMaster首先向ResourceManager注冊含末,這樣用戶就可以直接通過ResourceManager查看應(yīng)用程序的運(yùn)行狀態(tài)猜拾,然后它將為各個任務(wù)申請資源,并監(jiān)控它的運(yùn)行狀態(tài)佣盒,直到運(yùn)行結(jié)束挎袜,即重復(fù)步驟4~7。
  4. ApplicationMaster采用輪詢的方式通過RPC協(xié)議向ResourceManager申請和領(lǐng)取資源肥惭。
  5. 一旦ApplicationMaster申請到資源后盯仪,便與對應(yīng)的NodeManager通信,要求它啟動任務(wù)蜜葱。
  6. NodeManager為任務(wù)設(shè)置好運(yùn)行環(huán)境(包括環(huán)境變量全景、JAR包、二進(jìn)制程序等)后牵囤,將任務(wù)啟動命令寫到一個腳本中爸黄,并通過運(yùn)行該腳本啟動任務(wù)。
  7. 各個任務(wù)通過某個RPC協(xié)議向ApplicationMaster匯報自己的狀態(tài)和進(jìn)度揭鳞,以讓ApplicationMaster隨時掌握各個任務(wù)的運(yùn)行狀態(tài)炕贵,從而可以在任務(wù)失敗時重新啟動任務(wù)。
  8. 應(yīng)用程序運(yùn)行完成后野崇,ApplicationMaster向ResourceManager注銷并關(guān)閉自己称开。
YARN工作流程
FullStackPlan

歡迎關(guān)注公眾號: FullStackPlan 獲取更多干貨哦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市乓梨,隨后出現(xiàn)的幾起案子钥弯,更是在濱河造成了極大的恐慌,老刑警劉巖督禽,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異总处,居然都是意外死亡狈惫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胧谈,“玉大人忆肾,你說我怎么就攤上這事×庑ぃ” “怎么了客冈?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長稳强。 經(jīng)常有香客問我场仲,道長,這世上最難降的妖魔是什么退疫? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任渠缕,我火速辦了婚禮,結(jié)果婚禮上褒繁,老公的妹妹穿的比我還像新娘亦鳞。我一直安慰自己,他們只是感情好棒坏,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布燕差。 她就那樣靜靜地躺著,像睡著了一般坝冕。 火紅的嫁衣襯著肌膚如雪徒探。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天徽诲,我揣著相機(jī)與錄音刹帕,去河邊找鬼。 笑死谎替,一個胖子當(dāng)著我的面吹牛偷溺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钱贯,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼挫掏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤挎挖,失蹤者是張志新(化名)和其女友劉穎胎撤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挖炬,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了剧蚣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鸠按,靈堂內(nèi)的尸體忽然破棺而出礼搁,到底是詐尸還是另有隱情,我是刑警寧澤目尖,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布馒吴,位于F島的核電站,受9級特大地震影響瑟曲,放射性物質(zhì)發(fā)生泄漏饮戳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一测蹲、第九天 我趴在偏房一處隱蔽的房頂上張望莹捡。 院中可真熱鬧,春花似錦扣甲、人聲如沸篮赢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽启泣。三九已至,卻和暖如春示辈,著一層夾襖步出監(jiān)牢的瞬間寥茫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工矾麻, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留纱耻,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓险耀,卻偏偏與公主長得像弄喘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子甩牺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

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