2015年5月27日 星期三

YARN Application執行流程

簡單描述了一個Application在YARN上的執行流程以及其套件的功能,希望對初識YARN的同學提供一些幫助。


了解YARN(Yet Another Resource Negotiator) 或稱作是MapReduce 2.0是學習Hadoop非常重要的一環,透過該系統不同元件的相互溝通,你可以更加了解Hadoop的運作方式,下列是有關個元件詳細的介紹




NameNode(Hadoop FileSystem元件)

NameNode是Hadoop FileSystem的核心。它保留在FileSystem的所有文件的目錄樹,並追踪何處整個群集的文件數據被保持。它不存儲這些文件本身的數據。

DateNode (Hadoop FileSystem元件)

DataNode存儲實際數據在HDFS上。FileSystem通常有一個以上的的DataNode,它們彼此複製數據。啟動時,DataNode開始連接到NameNode;持續運作直到該服務啟動。然後,DateNode回應它NameNode所需要進行FileSystem請求


Resource Manager (YARN元件)

Resource Manager的功能很簡單:持續以及追踪可用資源。每一個cluster包括兩個主要元件:Scheduler和ApplicationsManager。
Scheduler是負責分配資源的各種運行的應用程序。
ApplicationsManager負責接受作業提交,談判第一容器ApplicationMaster和提供服務的重新啟動ApplicationMaster容器上的失敗。

Application Master (YARN元件)


Application Master是為cluster中運行的每個應用程序創建的。它提供了任務級調度和監視。


Node Manager (YARN元件)

Node Manager 是創建任務容器的框架代理者。容器的資源可以隨意改變,並且任務可以是任何類型的計算不僅映射/降低任務。此外,它監控容器的資源使用情況(CPU,記憶體,硬碟,網絡),並回報給ResourceManager。


**RM=ResourceManager NM=NodeManager AM= AppliactionManager



1.客戶端提交作業到RM。
2.RM在調度器中創建一個新的AppAttempt,維護該作業的信息。
3.NM1向RM發送心跳,RM把ApplicationMaster分配到該NM1。
4.RM通過RPC調用NM1的startcontainer方法。
5.NM1啟動AM。
6.AM啟動後向RM註冊,並向RM請求資源。
7.RM在調度器中維護AM所需的資源container1、container2等。
8.NM2向RM發送心跳,請求資源。
9.RM向NM2分配相應的資源container1。
10.AM向RM發送心跳,RM告訴AM已經分配的container。
11.AM通過RPC調用NM2的startcontainer方法。
12.NM2啟動container1。
13.Container1啟動後向AM匯報進度。
14.Container1結束後NM通過心跳通知RM。
15.AM向RM發送心跳,RM告訴AM相應的container1已經結束(也可以實現container直接告訴AM已經成功​​結束)。
16.當AM的所有Task已經結束,AM向RM匯報自己的結束狀態


出處:http://codesfusion.blogspot.tw/2013/11/hadoop-2x-core-hdfs-and-yarn-components.html