1、基本架構
(1)組成:YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等組件構成
(2)ResourceManager作用
1)處理客戶端請求
2)監控NodeManager
3)啟動或監控ApplicationMaster
4)資源的分配與調度
(3)NodeManager作用
1)管理單個節點上的資源
2)處理來自ResourceManager的命令
3)處理來自ApplicationMaster的命令
(4)ApplicationMaster 作用
1)負責數據的切分
2)為應用程序申請資源並分配給內部的任務
3)任務的監控與容錯
(5)Container :Container是YARN中的資源抽象,它封裝了某個節點上的多維度資源,如內存、CPU、磁盤、網絡等。
2、工作機制
(1)Mr 程序提交到客戶端所在的節點(生成job.split、job.xml...等任務規划配置文件)。
(2)Yarnrunner 根據job運行所需資源向Resourcemanager 申請Application,RM將該應用程序的資源路徑返回給 yarnrunner,將運行所需資源提交到 HDFS 上之后申請開啟App。
(3)RM 將用戶的請求初始化成一個 task,其中一個 NodeManager 領取到 task 任務, 創建容器 Container,並產生 Appmaster。
(4)Container 從 HDFS 上拷貝任務規划配置文件以及資源到本地,Appmaster 向 RM 申請運行 maptask 資源,RM 將運行 maptask 任務分配給另外兩個 NodeManager,另兩個 NodeManager 分別領取任務並創建容器。
(5)AppMaster 向兩個接收到任務的 NodeManager 發送程序啟動腳本,這兩個 NodeManager分別啟動 maptask 對數據分區排序。
(6)AppMaster 等待所有 maptask 運行完畢后,向 RM 申請容器,運行 reduce task。
(7)reduce task 向 maptask 獲取相應分區的數據。程序運行完畢后,AppMaster 會向 RM 申請注銷自己。