Yarn知識

Year的資源管理模型

在實際系統(tǒng)中忿危,資源本身是多維度的达箍,包括CPU、內存铺厨、網(wǎng)絡I/O和磁盤I/O等缎玫,因此,如果想精確控制資源分配解滓,不能再有slot的概念赃磨,最直接的方法就是是讓任務直接向調度器申請自己需要的資源(比如某個任務可申請1GB 內存和1個CPU),而調度器則按照任務實際需求為其精細地分配對應的資源量洼裤,不再簡單的將一個Slot分配給它邻辉,Hadoop 2.0正式采用了這種基于真實資源量的資源分配方案。

Hadoop 2.0最基本的設計思想是將JobTracker的兩個主要功能腮鞍,即資源管理和作業(yè)調度/監(jiān)控分成兩個獨立的進程值骇。全局的ResourceManager(RM)和與每個應用相關的ApplicationMaster(AM)。

yarn架構圖

YARN架構設計

ResourceManager(RM):負責對各NM上的資源進行統(tǒng)一管理和調度移国。對AM申請的資源請求分配相應的空閑Container吱瘩。將AM分配空閑的Container運行并監(jiān)控其運行狀態(tài)。主要由兩個組件構成:調度器和應用程序管理器桥狡。

調度器(Scheduler):調度器根據(jù)容量搅裙、隊列等限制條件,將系統(tǒng)中的資源分配給各個正在運行的應用程序裹芝。調度器僅根據(jù)各個應用程序的資源需求進行資源分配部逮,而資源分配單位是Container,從而限定每個任務使用的資源量嫂易。Shceduler不負責監(jiān)控或者跟蹤應用程序的狀態(tài)兄朋,也不負責任務因為各種原因而需要的重啟(由ApplicationMaster負責)。

調度器是可插拔的怜械,例如CapacityScheduler颅和、FairScheduler。

應用程序管理器(Applications Manager):應用程序管理器負責管理整個系統(tǒng)中所有應用程序缕允,包括應用程序提交峡扩、與調度器協(xié)商資源以啟動AM、監(jiān)控AM運行狀態(tài)并在失敗時重新啟動等障本,跟蹤分給的Container的進度教届、狀態(tài)也是其職責响鹃。

NodeManager(NM):NM是每個節(jié)點上的資源和任務管理器。它會定時地向RM匯報本節(jié)點上的資源使用情況和各個Container的運行狀態(tài)案训;同時會接收并處理來自AM的Container 啟動/停止等請求买置。

ApplicationMaster(AM):用戶提交的應用程序均包含一個AM,負責應用的監(jiān)控强霎,跟蹤應用執(zhí)行狀態(tài)忿项,重啟失敗任務等。AM是應用框架城舞,它負責向RM協(xié)調資源轩触,并且與NM協(xié)同工作完成Task的執(zhí)行和監(jiān)控。MapReduce就是原生支持的一種框架椿争,可以在YARN上運行Mapreduce作業(yè)怕膛。有很多分布式應用都開發(fā)了對應的應用程序框架,用于在YARN上運行任務秦踪,例如Spark褐捻,Storm等。

Container:是YARN中的資源抽象椅邓,它封裝了某個節(jié)點上的多維度資源柠逞,如內存、CPU景馁、磁盤板壮、網(wǎng)絡等,當AM向RM申請資源時合住,RM為AM返回的資源便是用Container 表示的绰精。YARN會為每個任務分配一個Container且該任務只能使用該Container中描述的資源。

YARN工作流程(MapReduce提交應用程序)

工作流程

1)用戶向YARN中提交應用程序透葛,其中包括ApplicationMaster程序笨使、啟動AM的命令、用戶程序等僚害。

2)ResourceManager為該應用程序分配第一個Container硫椰,并與對應的Node Manager通信,要求它在這個Container中啟動應用程序的AM萨蚕。

3)AM首先向RM注冊靶草,這樣用戶可以直接通過RM查看應用程序的運行狀態(tài),然后它將為各個任務申請資源岳遥,并監(jiān)控它的運行狀態(tài)奕翔,直到運行結束,即重復步驟4~7浩蓉。

4)AM采用輪詢的方式通過RPC協(xié)議向RM申請和領取資源派继。

5)一旦AM申請到資源后帮坚,便與對應的NM通信,要求它啟動任務互艾。

6)NM為任務設置好運行環(huán)境(包括環(huán)境變量、JAR包讯泣、二進制程序等)后纫普,將任務啟動命令寫到一個腳本中,并通過運行該腳本啟動任務好渠。

7)各個任務通過某個RPC協(xié)議向AM匯報自己的狀態(tài)和進度昨稼,以讓AM隨時掌握各個任務的運行狀態(tài),從而可以在任務失敗時重新啟動任務拳锚。在應用程序運行過程中假栓,用戶可隨時通過RPC向AM查詢應用程序的當前運行狀態(tài)。

8)應用程序運行完成后霍掺,AM向RM注銷并關閉自己匾荆。

當用戶向YARN中提交一個應用程序后,YARN將分兩個階段運行該應用程序:第一個階段是啟動AM杆烁;第二個階段是由AM創(chuàng)建應用程序牙丽,為它申請資源,并監(jiān)控它的整個運行過程兔魂,直到運行完成烤芦。

YARN的資源管理與調優(yōu)

ResourceManager將某個NodeManager上資源分配給任務(資源調度)后,NodeManager需按照要求為任務提供相應的資源析校,甚至保證這些資源應具有獨占性构罗,為任務運行提供基礎的保證(資源隔離)。

內存資源

1)yarn.nodemanager.resource.memory-mb 該節(jié)點上YARN可使用的物理內存總量:

假設我的這個節(jié)點上的內存有48G智玻,其中25%是要給Linux的遂唧,而剩余的75%給大數(shù)據(jù)進程。其中尚困,一般把DN和NM放置在同一個機器上(數(shù)據(jù)本地化)蠢箩。默認的DN是給到4個G,而NM是給到3個G事甜。(這兩個參數(shù)分別是在hadoop-env.sh和yarn-env.sh兩個shell腳本當中設置)谬泌。

我們的contanier最多也就可以用29個G了, yarn.nodemanager.resource.memory-mb逻谦,當這個參數(shù)設置成剩余全部內存時意味著我們的NM在執(zhí)行tasks的時候可以使用到29個G掌实。

2)yarn.scheduler.minimum-allocation-mb 單個任務可申請的最少物理內存量:

一個contnaier最小將分配多少的G,我們生產(chǎn)上一般是設置成2個G邦马,要是機器上剩余的內存達不到2個G贱鼻,就不再在這個機器上開啟container宴卖。

3)yarn.scheduler.maximum-allocation-mb 單個任務可申請的最多物理內存量

當一個container開啟以后,在上面放置的task不是一下子就使用到最大內存極限的邻悬,一般會先個2個G(就是最小內存限制)症昏,如果不夠了就是繼續(xù)增加,直到最大內存限制父丰,還不夠就報錯肝谭。所以最大內存設置一般和整個節(jié)點的contanier可用內存設置是一樣大。

4.2. CPU資源

vcore:虛擬cpu蛾扇,yarn自己引入的新概念攘烛,因為不同的物理core的性能不同,所以為了每個core的計算能力能一致點镀首,這個時候設置了一個vcore坟漱。一般1個物理core對應2個vcore,也有公司是1:1的更哄。

cpu同樣也有三組參數(shù):

yarn.nodemanager.resource.cpu-vcores
yarn.scheduler.minimum-allocation-vcores
yarn.scheduler.maximum-allocation-vcores

三組默認值分別是8芋齿,1,8成翩。假如物理core是8個話沟突,要考慮究竟要個多少個core給大數(shù)據(jù)使用。如果是給了6個core預留2個core給其他進程捕传,這樣的vcore將有12個惠拭。

在Yarn中有三種調度器可以選擇:FIFO Scheduler ,Capacity Scheduler庸论,F(xiàn)airScheduler职辅。

image.png

FIFO Scheduler把應用按提交的順序排成一個隊列,這是一個 先進先出隊列聂示,在進行資源分配的時候域携,先給隊列中最頭上的應用進行分配資源,待最頭上的應用需求滿足后再給下一個分配鱼喉,以此類推秀鞭。
FIFO Scheduler是最簡單也是最容易理解的調度器,也不需要任何配置扛禽,但它并不適用于共享集群锋边。大的應用可能會占用所有集群資源,這就導致其它應用被阻塞编曼。在共享集群中豆巨,更適合采用Capacity Scheduler或Fair Scheduler,這兩個調度器都允許大任務和小任務在提交的同時獲得一定的系統(tǒng)資源掐场。
從圖中可以看出往扔,在FIFO 調度器中贩猎,小任務會被大任務阻塞。

image.png

而對于Capacity調度器萍膛,有一個專門的隊列用來運行小任務吭服,但是為小任務專門設置一個隊列會預先占用一定的集群資源,這就導致大任務的執(zhí)行時間會落后于使用FIFO調度器時的時間蝗罗。


image.png

在Fair調度器中噪馏,我們不需要預先占用一定的系統(tǒng)資源,F(xiàn)air調度器會為所有運行的job動態(tài)的調整系統(tǒng)資源绿饵。如圖所示,當?shù)谝粋€大job提交時瓶颠,只有這一個job在運行拟赊,此時它獲得了所有集群資源;當?shù)诙€小任務提交后粹淋,F(xiàn)air調度器會分配一半資源給這個小任務吸祟,讓這兩個任務公平的共享集群資源。
需要注意的是桃移,在圖Fair調度器中屋匕,從第二個任務提交到獲得資源會有一定的延遲,因為它需要等待第一個任務釋放占用的Container借杰。小任務執(zhí)行完成之后也會釋放自己占用的資源过吻,大任務又獲得了全部的系統(tǒng)資源。最終的效果就是Fair調度器即得到了高的資源利用率又能保證小任務及時完成蔗衡。

調度器的使用是通過yarn-site.xml配置文件中的yarn.resourcemanager.scheduler.class參數(shù)進行配置的纤虽,默認采用Capacity Scheduler調度器。如果我們要使用Fair調度器绞惦,需要在這個參數(shù)上配置FairScheduler類的全限定名: org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler逼纸。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市济蝉,隨后出現(xiàn)的幾起案子杰刽,更是在濱河造成了極大的恐慌,老刑警劉巖王滤,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贺嫂,死亡現(xiàn)場離奇詭異,居然都是意外死亡雁乡,警方通過查閱死者的電腦和手機涝婉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔗怠,“玉大人墩弯,你說我怎么就攤上這事吩跋。” “怎么了渔工?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵锌钮,是天一觀的道長。 經(jīng)常有香客問我引矩,道長梁丘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任旺韭,我火速辦了婚禮氛谜,結果婚禮上,老公的妹妹穿的比我還像新娘区端。我一直安慰自己值漫,他們只是感情好,可當我...
    茶點故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布织盼。 她就那樣靜靜地躺著杨何,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沥邻。 梳的紋絲不亂的頭發(fā)上危虱,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天,我揣著相機與錄音唐全,去河邊找鬼埃跷。 笑死,一個胖子當著我的面吹牛邮利,可吹牛的內容都是我干的捌蚊。 我是一名探鬼主播,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼近弟,長吁一口氣:“原來是場噩夢啊……” “哼缅糟!你這毒婦竟也來了?” 一聲冷哼從身側響起祷愉,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤窗宦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后二鳄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赴涵,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年订讼,在試婚紗的時候發(fā)現(xiàn)自己被綠了髓窜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖寄纵,靈堂內的尸體忽然破棺而出鳖敷,到底是詐尸還是另有隱情,我是刑警寧澤程拭,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布定踱,位于F島的核電站,受9級特大地震影響恃鞋,放射性物質發(fā)生泄漏崖媚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一恤浪、第九天 我趴在偏房一處隱蔽的房頂上張望畅哑。 院中可真熱鬧,春花似錦水由、人聲如沸荠呐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至濒募,卻和暖如春鞭盟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瑰剃。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工齿诉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晌姚。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓粤剧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挥唠。 傳聞我的和親對象是個殘疾皇子抵恋,可洞房花燭夜當晚...
    茶點故事閱讀 45,930評論 2 361