Hadoop之Yarn

目錄
????1 Hadoop1.x和Hadoop2.x架構(gòu)區(qū)別
????2 Yarn概述
????3 Yarn基本架構(gòu)
????4 Yarn工作機制
????5 作業(yè)提交全過程
????6 資源調(diào)度器
????7 任務(wù)的推測執(zhí)行

1 Hadoop1.x和Hadoop2.x架構(gòu)區(qū)別
  • 在Hadoop1.x時代,Hadoop中的MapReduce同時處理業(yè)務(wù)邏輯運算和資源的調(diào)度蒲列,耦合性較大约炎。

  • 在Hadoop2.x時代,增加了Yarn公般。Yarn只負責(zé)資源的調(diào)度雕崩,MapReduce只負責(zé)運算

2 Yarn概述

????Yarn是一個資源調(diào)度平臺涝动,負責(zé)為運算程序提供服務(wù)器運算資源,相當(dāng)于一個分布式的操作系統(tǒng)平臺胆描,而MapReduce等運算程序則相當(dāng)于運行于操作系統(tǒng)之上的應(yīng)用程序瘫想。

3 Yarn基本架構(gòu)

????YARN主要由ResourceManager辉阶、NodeManager褥蚯、ApplicationMaster和Container等組件構(gòu)成。

Yarn架構(gòu)
4 Yarn工作機制

(1)Yarn運行機制

yarn工作機制

(2)yarn工作機制詳解

  • (0)Mr程序提交到客戶端所在的節(jié)點镰官。
  • (1)Yarnrunner向Resourcemanager申請一個Application剧蚣。
  • (2)rm將該應(yīng)用程序的資源路徑返回給yarnrunner支竹。
  • (3)該程序?qū)⑦\行所需資源提交到HDFS上旋廷。
  • (4)程序資源提交完畢后鸠按,申請運行mrAppMaster。
  • (5)RM將用戶的請求初始化成一個task饶碘。
  • (6)其中一個NodeManager領(lǐng)取到task任務(wù)目尖。
  • (7)該NodeManager創(chuàng)建容器Container,并產(chǎn)生MRAppmaster扎运。
  • (8)Container從HDFS上拷貝資源到本地瑟曲。
  • (9)MRAppmaster向RM 申請運行maptask資源。
  • (10)RM將運行maptask任務(wù)分配給另外兩個NodeManager豪治,另兩個NodeManager分別領(lǐng)取任務(wù)并創(chuàng)建容器洞拨。
  • (11)MR向兩個接收到任務(wù)的NodeManager發(fā)送程序啟動腳本,這兩個NodeManager分別啟動maptask负拟,maptask對數(shù)據(jù)分區(qū)排序烦衣。
  • (12)MrAppMaster等待所有maptask運行完畢后,向RM申請容器掩浙,運行reduce task花吟。
  • (13)reduce task向maptask獲取相應(yīng)分區(qū)的數(shù)據(jù)。
  • (14)程序運行完畢后厨姚,MR會向RM申請注銷自己衅澈。
5 作業(yè)提交全過程

作業(yè)提交全過程詳解
(1)作業(yè)提交

  • 第0步:client調(diào)用job.waitForCompletion方法,向整個集群提交MapReduce作業(yè)谬墙。
  • 第1步:client向RM申請一個作業(yè)id今布。
  • 第2步:RM給client返回該job資源的提交路徑和作業(yè)id。
  • 第3步:client提交jar包拭抬、切片信息和配置文件到指定的資源提交路徑险耀。
  • 第4步:client提交完資源后,向RM申請運行MrAppMaster玖喘。

(2)作業(yè)初始化

  • 第5步:當(dāng)RM收到client的請求后甩牺,將該job添加到容量調(diào)度器中。
  • 第6步:某一個空閑的NM領(lǐng)取到該job累奈。
  • 第7步:該NM創(chuàng)建Container贬派,并產(chǎn)生MRAppmaster急但。
  • 第8步:下載client提交的資源到本地。

(3)任務(wù)分配

  • 第9步:MrAppMaster向RM申請運行多個maptask任務(wù)資源搞乏。
  • 第10步:RM將運行maptask任務(wù)分配給另外兩個NodeManager波桩,另兩個NodeManager分別領(lǐng)取任務(wù)并創(chuàng)建容器。

(4)任務(wù)運行

  • 第11步:MR向兩個接收到任務(wù)的NodeManager發(fā)送程序啟動腳本请敦,這兩個NodeManager分別啟動maptask镐躲,maptask對數(shù)據(jù)分區(qū)排序。
  • 第12步:MrAppMaster等待所有maptask運行完畢后侍筛,向RM申請容器萤皂,運行reduce task。
  • 第13步:reduce task向maptask獲取相應(yīng)分區(qū)的數(shù)據(jù)匣椰。
  • 第14步:程序運行完畢后裆熙,MR會向RM申請注銷自己。

(5)進度和狀態(tài)更新
????YARN中的任務(wù)將其進度和狀態(tài)(包括counter)返回給應(yīng)用管理器, 客戶端每秒(通過mapreduce.client.progressmonitor.pollinterval設(shè)置)向應(yīng)用管理器請求進度更新, 展示給用戶禽笑。

(6)作業(yè)完成
????除了向應(yīng)用管理器請求作業(yè)進度外, 客戶端每5分鐘都會通過調(diào)用waitForCompletion()來檢查作業(yè)是否完成入录。時間間隔可以通過mapreduce.client.completion.pollinterval來設(shè)置。作業(yè)完成之后, 應(yīng)用管理器和container會清理工作狀態(tài)佳镜。作業(yè)的信息會被作業(yè)歷史服務(wù)器存儲以備之后用戶核查僚稿。

6 資源調(diào)度器

????目前,Hadoop作業(yè)調(diào)度器主要有三種:FIFO蟀伸、Capacity Scheduler和Fair Scheduler蚀同。Hadoop2.7.2默認的資源調(diào)度器是Capacity Scheduler。
具體設(shè)置詳見:yarn-default.xml文件

<property>
    <description>The class to use as the resource scheduler.</description>
    <name>yarn.resourcemanager.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

(1)先進先出調(diào)度器(FIFO)

FIFO
  • 優(yōu)點:調(diào)度算法簡單望蜡,JobTracker工作負擔(dān)輕唤崭。
  • 缺點:忽略了不同作業(yè)的需求差異。例如如果類似對海量數(shù)據(jù)進行統(tǒng)計分析的作業(yè)長期占據(jù)計算資源脖律,那么在其后提交的交互型作業(yè)有可能遲遲得不到處理谢肾,從而影響到用戶的體驗。

(2)容量調(diào)度器(Capacity Scheduler)===>Yahoo開發(fā)

Capacity Scheduler
  • 1.多隊列支持小泉,每個隊列采用FIFO

  • 2.為了防止同一個用戶的作業(yè)獨占隊列中的資源芦疏,該調(diào)度器會對同一個用戶提交多的作業(yè)所占資源量進行限定

  • 3.首先,計算每個隊列中正在運行的任務(wù)數(shù)與其應(yīng)該分得的計算資源之間的比值微姊,選擇一個該比值最小的隊列

  • 4.其次酸茴,根據(jù)作業(yè)的優(yōu)先級和提交時間順序,同時考慮用戶資源量限制和內(nèi)存限制對隊列內(nèi)任務(wù)排序

  • 5.三個隊列同時按照任務(wù)的先后順序依次執(zhí)行兢交,比如薪捍,job1,job21和job31分別排在隊列最前面,是最先運行酪穿,也是同時運行

????該調(diào)度默認情況下不支持優(yōu)先級凳干,但是可以在配置文件中開啟此選項,如果支持優(yōu)先級被济,調(diào)度算法就是帶有優(yōu)先級的FIFO救赐。

????不支持優(yōu)先級搶占,一旦一個作業(yè)開始執(zhí)行只磷,在執(zhí)行完之前它的資源不會被高優(yōu)先級作業(yè)所搶占经磅。

????對隊列中同一用戶提交的作業(yè)能夠獲得的資源百分比進行了限制以使同屬于一用戶的作業(yè)不能出現(xiàn)獨占資源的情況。

(3)公平調(diào)度器(Fair Scheduler)===>Facebook開發(fā)

Fair Scheduler
  • 1.支持多隊列多用戶钮追,每個隊列中的資源量可以配置预厌,同一個隊列中的作業(yè)公平共享隊列中所有資源

  • 2.比如有三個隊列A,B畏陕,C.每個隊列中的job按照優(yōu)先級分配資源配乓,優(yōu)先級越高分配的資源越多仿滔,但是每個job都分配到資源以確保公平惠毁。在資源有限的情況下,每個job理想情況下崎页,獲得的計算資源與實際獲得的計算資源存在一種差距鞠绰,這個差距叫做缺額。同一個隊列飒焦,job的資源缺額越大蜈膨,越先獲得的資源優(yōu)先執(zhí)行,作業(yè)是按照缺額的高低來先后執(zhí)行的牺荠,而且可以看到上圖有多個作業(yè)同時運行

7 任務(wù)的推測執(zhí)行

????推測執(zhí)行(Speculative Execution)是指在集群環(huán)境下運行MapReduce翁巍,可能是程序Bug,負載不均或者其他的一些問題休雌,導(dǎo)致在一個JOB下的多個TASK速度不一致灶壶,比如有的任務(wù)已經(jīng)完成,但是有些任務(wù)可能只跑了10%杈曲,根據(jù)木桶原理驰凛,這些任務(wù)將成為整個JOB的短板,如果集群啟動了推測執(zhí)行担扑,這時為了最大限度的提高短板恰响,Hadoop會為該task啟動備份任務(wù),讓speculative task與原始task同時處理一份數(shù)據(jù)涌献,哪個先運行完胚宦,則將誰的結(jié)果作為最終結(jié)果,并且在運行完成后Kill掉另外一個任務(wù)。

(1)作業(yè)完成時間取決于最慢的任務(wù)完成時間
????一個作業(yè)由若干個Map任務(wù)和Reduce任務(wù)構(gòu)成枢劝。因硬件老化绞灼、軟件Bug等,某些任務(wù)可能運行非常慢呈野。
????典型案例:系統(tǒng)中有99%的Map任務(wù)都完成了低矮,只有少數(shù)幾個Map老是進度很慢,完不成被冒,怎么辦军掂?

(2)推測執(zhí)行機制:
????發(fā)現(xiàn)拖后腿的任務(wù),比如某個任務(wù)運行速度遠慢于任務(wù)平均速度昨悼。為拖后腿任務(wù)啟動一個備份任務(wù)蝗锥,同時運行。誰先運行完率触,則采用誰的結(jié)果终议。

(3)執(zhí)行推測任務(wù)的前提條件

  • 每個task只能有一個備份任務(wù);
  • 當(dāng)前job已完成的task必須不小于0.05(5%)
  • 開啟推測執(zhí)行參數(shù)設(shè)置葱蝗,mapred-site.xml文件中默認是打開的
<property>
  <name>mapreduce.map.speculative</name>
  <value>true</value>
  <description>If true, then multiple instances of some map tasks                may be executed in parallel.</description>
</property>

<property>
  <name>mapreduce.reduce.speculative</name>
  <value>true</value>
  <description>If true, then multiple instances of some reduce tasks 
               may be executed in parallel.</description>
</property>

(4)不能啟用推測執(zhí)行機制情況

  • 任務(wù)間存在嚴重的負載傾斜穴张;
  • 特殊任務(wù),比如任務(wù)向數(shù)據(jù)庫中寫數(shù)據(jù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末两曼,一起剝皮案震驚了整個濱河市皂甘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悼凑,老刑警劉巖偿枕,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異户辫,居然都是意外死亡渐夸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門渔欢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來墓塌,“玉大人,你說我怎么就攤上這事膘茎√掖浚” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵披坏,是天一觀的道長态坦。 經(jīng)常有香客問我,道長棒拂,這世上最難降的妖魔是什么玫氢? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任漾峡,我火速辦了婚禮生逸,結(jié)果婚禮上且预,老公的妹妹穿的比我還像新娘锋谐。我一直安慰自己,他們只是感情好乾戏,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著康铭,像睡著了一般从藤。 火紅的嫁衣襯著肌膚如雪锁蠕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天悯搔,我揣著相機與錄音舌仍,去河邊找鬼铸豁。 笑死,一個胖子當(dāng)著我的面吹牛节芥,可吹牛的內(nèi)容都是我干的逆害。 我是一名探鬼主播魄幕,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼队丝!你這毒婦竟也來了欲鹏?” 一聲冷哼從身側(cè)響起赔嚎,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤尤误,失蹤者是張志新(化名)和其女友劉穎损晤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喘落,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年最冰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暖哨。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖篇裁,靈堂內(nèi)的尸體忽然破棺而出沛慢,到底是詐尸還是另有隱情达布,我是刑警寧澤团甲,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站往枣,受9級特大地震影響伐庭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜圾另,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一集乔、第九天 我趴在偏房一處隱蔽的房頂上張望扰路。 院中可真熱鬧汗唱,春花似錦宫莱、人聲如沸授霸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至框弛,卻和暖如春辛辨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瑟枫。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工斗搞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人力奋。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓榜旦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親景殷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

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

  • 1 概述 Yarn 是一個資源調(diào)度平臺澡屡,負責(zé)為運算程序提供服務(wù)器運算資源猿挚,相當(dāng)于一個分布式的操作系統(tǒng)平臺,而 Ma...
    djm猿閱讀 145評論 0 0
  • 1.YARN 本質(zhì)上是資源管理系統(tǒng)驶鹉。YARN提供了資源管理和資源調(diào)度等機制 1.1原 Hadoop MapRedu...
    yoku醬閱讀 844評論 0 0
  • 前言: 上節(jié)課我們講了 MR job的提交YARN的工作流程 與 YARN的架構(gòu)绩蜻,本次課程詳細講講YARN,多多總...
    ly稻草閱讀 4,802評論 0 5
  • MRAppMaster MRAppMaster是MapReduce的ApplicationMaster實現(xiàn)室埋,它使得...
    tracy_668閱讀 8,897評論 0 3
  • 上一篇:084-BigData-12MapReduce入門 續(xù)上一篇 四办绝、Hadoop數(shù)據(jù)壓縮 1伊约、概述 壓縮技術(shù)...
    AncientMing閱讀 387評論 0 1