使用者提交的每個應用程式均包含1個am,主要功能包括:與rm排程器協商以獲取資源(用container表示);將得到的任務進一步分配給內部的任務;與nm通訊以啟動/停止任務;監控所有任務執行狀態,並在任務執行失敗時重新為任務申請資源以重啟任務。
3. nodemanager(nm)
nm是每個節點上的資源和任務管理器,一方面,它會定時地向rm匯報本節點上的資源使用情況和各個container的執行狀態;另一方面,它接收並處理來自am的container啟動/停止等各種請求。
4. container
container是yarn中的資源抽象,它封裝了某個節點上的多維度資源,如記憶體、cpu、磁碟、網路等,當am向rm申請資源時,rm為am返回的資源便是用container表示的。yarn會為每個任務分配乙個container,且該任務只能使用該container中描述的資源。
6.nodemanager為任務設定好執行環境(包括環境變數、jar包、二進位制程式等)後,將任務啟動命令寫到乙個指令碼中,並通過執行該指令碼啟動任務。
在yarn中有三種排程器可以選擇:fifo scheduler ,capacity scheduler,fair scheduler。
1.fifo scheduler把應用按提交的順序排成乙個佇列,這是乙個先進先出佇列,在進行資源分配的時候,先給佇列中最頭上的應用進行分配資源,待最頭上的應用需求滿足後再給下乙個分配,以此類推。fifo scheduler是最簡單也是最容易理解的排程器,也不需要任何配置,但它並不適用於共享集群。大的應用可能會占用所有集群資源,這就導致其它應用被阻塞。在共享集群中,更適合採用capacity scheduler或fair scheduler,這兩個排程器都允許大任務和小任務在提交的同時獲得一定的系統資源。
2.capacity排程器,有乙個專門的佇列用來執行小任務,但是為小任務專門設定乙個佇列會預先占用一定的集群資源,這就導致大任務的執行時間會落後於使用fifo排程器時的時間。
3.fair排程器中我們不需要預先占用一定的系統資源,fair排程器會為所有執行的job動態的調整系統資源。如圖所示,當第乙個大job提交時,只有這乙個job在執行,此時它獲得了所有集群資源;當第二個小任務提交後,fair排程器會分配一半資源給這個小任務,讓這兩個任務公平的共享集群資源。需要注意的是,在圖中fair排程器中,從第二個任務提交到獲得資源會有一定的延遲,因為它需要等待第乙個任務釋放占用的container。小任務執行完成之後也會釋放自己占用的資源,大任務又獲得了全部的系統資源。最終的效果就是fair排程器即得到了高的資源利用率又能保證小任務及時完成。
參考文獻
1.
大資料亂入
以前談及大資料,總會第一想到的是hadoop,分布式,然後沒了。而真正接觸大資料的時候,發現這是乙個很大的體系,大資料只是個概念,而真正的核心在於資料的操作上,從資料的收集,處理,儲存,計算上來發現資料中潛藏的價值。大資料,機器學習,深度學習,人工智慧,這幾個比較火熱的話題,其實中間存在著千絲萬縷的...
滴滴大資料面經
地點 西二旗文思海輝 2月12日,如約到達滴滴面試地點,中間因為hr弄錯了面試地點,耽誤了一些時間。總體的感覺滴滴的氛圍非常好,是我面試的這幾個公司中特別喜歡的之一,面試官非常友善,hr姐姐也是非常熱情。面試開始 2 講專案 因為在實驗室主要做的是通訊和大資料的專案,滴滴這邊又是大資料的職位,因此將...
大資料面 學習筆記 2018 12
一面 1 自我介紹 hdfs架構 原理 2 mr原理 3 執行mr的過程中,使用了哪些函式?4 shuffer版本迭代的過程中更新了什麼?5 kafka原理,從生產者生產產品到消費者消費過程是怎樣的?5 flume框架的原理,soure有哪些?sink有哪些?6 hive如何去重?hive如何行轉列...