本篇博文,博主爲大家介紹Yarn的運行流程。
一. 運行流程
- 1、client向RM提交應用程序,其中包括啓動該應用的ApplicationMaster的必須信息,例如ApplicationMaster程序、啓動ApplicationMaster的命令、用戶程序等。
- 2、ResourceManager啓動一個container用於運行ApplicationMaster。
- 3、啓動中的ApplicationMaster向ResourceManager註冊自己,啓動成功後與RM保持心跳。
- 4、ApplicationMaster向ResourceManager發送請求,申請相應數目的container。
- 5、申請成功的container,由ApplicationMaster進行初始化。container的啓動信息初始化後,AM與對應的NodeManager通信,要求NM啓動container。
- 6、NM啓動啓動container。
- 7、container運行期間,ApplicationMaster對container進行監控。container通過RPC協議向對應的AM彙報自己的進度和狀態等信息。
- 8、應用運行結束後,ApplicationMaster向ResourceManager註銷自己,並允許屬於它的container被收回。
二. 工作流程
- (1)MR程序提交到客戶端所在的節點。
- (2)YarnRunner向ResourceManager申請一個Application。
- (3)RM將該應用程序的資源路徑返回給YarnRunner。
- (4)該程序將運行所需資源提交到HDFS上。
- (5)程序資源提交完畢後,申請運行mrAppMaster。
- (6)RM將用戶的請求初始化成一個Task。
- (7)其中一個NodeManager領取到Task任務。
- (8)該NodeManager創建容器Container,併產生MRAppmaster。
- (9)Container從HDFS上拷貝資源到本地。
- (10)MRAppmaster向RM 申請運行MapTask資源。
- (11)RM將運行MapTask任務分配給另外兩個NodeManager,另兩個NodeManager分別領取任務並創建容器。
- (12)MR向兩個接收到任務的NodeManager發送程序啓動腳本,這兩個NodeManager分別啓動MapTask,MapTask對數據分區排序。
- (13)MrAppMaster等待所有MapTask運行完畢後,向RM申請容器,運行ReduceTask。
- (14)ReduceTask向MapTask獲取相應分區的數據。
- (15)程序運行完畢後,MR會向RM申請註銷自己。
好了,本次關於Yarn運行流程的內容就介紹到這裏。下一篇文章將爲大家介紹Yarn 和MapReduce的作業提交全過程,敬請期待!