標籤:通訊 簡單 shell命令 hdfs 實現 好運 就是 任務 png
在hadoop中有三大核心組件,hdfs,yarn,mapreduce,在之前已經整理過hdfs基礎的一些東西,今天來瞭解一下yarn中的主要角色以及它的作用,然後熟悉當用戶端提交一個job到yarn上,yarn是如何去執行這個job。yarn(Yet Another Resource Negotiator)另一種資源調度協調者,是一種新的hadoop資源管理員,yarn是hadoop 2.X版本中的一個新特性。
(一)主要角色以及其作用
1、client:client覺得就是通過介面訪問yarn,提交job或者啟停任務。
2、ResourceManager:全域資源管理員 ①負責整個叢集的資源分派 ②調度、啟動每一個job所屬的ApplicationMaster ③監控ApplicationMaster的情況
RsourceManager主要有兩個構件組成:①調度器(scheduler) ②應用程式管理器(Applications Manager, ASM)
調度器(scheduler):調度器根據容量、隊列等限制條件將系統中的資源分派給正在啟動並執行應用程式。調度器不參與任何具體應用程式的相關工作,如:不負責監控或者跟蹤應用程式的執行狀態、不負責重啟應用執行失敗或者硬體故障產生的失敗任務。調度器僅根據各個應用程式的資源需求進行資源分派。
應用程式管理器(Applications Manager):負責整個系統中所有應用程式,包括應用程式的提交、與調度器資源協商以啟動Application Master、監控Application Master運行狀態並在失敗時重啟它。
3、Application Master:①與RM調度器協商以擷取資源(用container表示) ②將得到的任務進一步分配給內部的任務 ③與NM通訊以啟停任務 ④監控所有任務狀態,並在任務運行失敗時重新為任務申請資源以重啟任務
yarn中內建兩種Application Master的實現:一個是用於示範AM編寫方法的執行個體程式distributedshell,他可以申請一定數量的container以並行運行shell命令或者shell指令碼;另一種是運行MapReduce應用程式的AM-MRAppMaster
4、NodeManager:每個節點上資源和工作管理員 ①定時向RM彙報本節點上資源使用方式和container的健全狀態 ②接收並處理來自AM的container的啟停請求
5、Container:類似於一個資源的容器,RM為AM申請來的資源以container的形式表示 ①封裝了某個節點上的多維資源,如:CPU,記憶體,磁碟,網路等
在yarn中有兩種container:一種是AM運行時需要的Container;另一種是AP為執行任務向RM申請的
(二)yarn提交並執行一個MR任務的流程
1、使用者向yarn提交一個應用程式,其中包括MRAppMaster程式,啟動MRAppMaster的命令,使用者程式等
2、RM為改程式分配一個container,並與對應的NM通訊,要求在這個container中啟動應用程式MRAppMaster
3、MRAppMaster首先向RM註冊,這樣使用者可以通過RM查看應用程式的運行狀態,然後將為各個任務申請資源,並監控他的運行狀態直到結束
4、MRAppMaster採用輪詢的方式通過RPC協議向RM申請和領取資源
5、一旦MRAppMaster領取到資源,就與相對應的NM通訊,啟動任務
6、NM為任務配置好運行環境之後,將任務啟動命令寫到一個指令碼中,並通過該指令碼啟動任務
7、各個任務通過某個RPC協議向MRAppMaster彙報自己的狀態和進度,以讓MRAppMaster隨時掌握各個任務的運行狀態,從而可以在任務失敗的時候重新啟動任務
8、應用程式執行完成後,MRAppMaster向RM登出並關閉自己
YARN的簡單瞭解--大資料紀錄片第四記