Yarn是一個資源調度平臺,負責爲運算程序提供服務器運算資源,相當於一個分佈式的操作系統平臺,而MapReduce等運算程序則相當於運行於操作系統之上的應用程序。
1.Yarn運行機制,如圖24所示
2.工作機制詳解
(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申請容器,運行reduce task。
(14)reduce task向maptask獲取相應分區的數據。
(15)程序運行完畢後,MR會向RM申請註銷自己。
目前,Hadoop作業調度器主要有三種:FIFO、Capacity Scheduler和Fair Scheduler。Hadoop2.7.2默認的資源調度器是Capacity Scheduler。
具體設置詳見:yarn-default.xml文件
<property>
<description>The class to use as the resource scheduler.</description>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
1.先進先出調度器(FIFO),如圖所示
2.容量調度器(Capacity Scheduler),如圖所示
3.公平調度器(Fair Scheduler),如圖所示