Yarn詳解

Yarn概述

Yarn是一個資源調度平臺,負責爲運算程序提供服務器運算資源,相當於一個分佈式的操作系統平臺,而MapReduce運算程序則相當於運行於操作系統之上的應用程序

Yarn工作機制

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)MRAppmasterRM 申請運行maptask資源。

(11)RM運行maptask任務分配給另外兩個NodeManager另兩個NodeManager分別領取任務創建容器。

(12)MR向兩個接收到任務的NodeManager發送程序啓動腳本這兩個NodeManager分別啓動maptaskmaptask數據分區排序。

(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),如圖所示