YARN 是一個資源調度平臺,負責為運算程序提供伺服器運算資源,相當於一個分布式的操 作系統平臺,而 MapReduce 等運算程序則相當於運行於作業系統之上的應用程式
Yarn的組成
1) ResourceManager(RM)
控制整個集群並管理應用程式向基礎計算資源的分配。
1、處理客戶端請求
2、啟動或監控ApplicationMaster
3、監控NodeManager
4、資源的分配與調度
2) ApplicationMaster(AM)
ApplicationMaster管理在YARN內運行的每個應用程式實例。
1、負責數據的切分
2、為應用程式申請資源並分配給內部的任務
3、任務的監控與容錯
3) NodeManager(NM)
NodeManager管理YARN集群中的每個節點。NodeManager提供針對集群中每個節點的服務,從監督對一個容器的終生管理到監視資源和跟蹤節點健康。
1、管理單個節點上的資源
2、處理來自ResourceManager的命令
3、處理來自ApplicationMaster的命令
4) Container:Container是YARN中的資源抽象,它封裝了某個節點上的多維度資源,如內存、CPU、磁碟、網絡等,當AM向RM申請資源時,RM為AM返回的資源便是用Container表示的。YARN會為每個任務分配一個Container,且該任務只能使用該Container中描述的資源。總的來說,Container有以下作用:
1、對任務運行環境進行抽象
2、封裝CPU、內存等多維度的資源以及環境變量、啟動命令等任務運行相關的信息
工作流程
(0)Mr程序提交到客戶端所在的節點
(1)Yarnrunner向Resourcemanager申請一個Application。
(2)rm將該應用程式的資源路徑返回給yarnrunner
(3)該程序將運行所需資源提交到HDFS資源路徑上
(4)程序資源提交完畢後,申請運行mrAppMaster
(5)RM將用戶的請求初始化成一個task
(6)其中一個NodeManager領取到task任務。
(7)該NodeManager創建容器Container,並產生MRAppmaster
(8)Container從HDFS資源路徑上拷貝資源到本地
(9)MRAppmaster向RM 申請運行maptask容器
(10)RM將運行maptask任務分配給另外兩個NodeManager,另兩個NodeManager分別領取任務並創建容器。
(11)MR向兩個接收到任務的NodeManager發送程序啟動腳本,這兩個NodeManager分別啟動maptask,maptask對數據分區排序。
(12)MRAppmaster向RM申請2個容器,運行reduce task。
(13)reduce task向maptask獲取相應分區的數據。
(14)程序運行完畢後,MR會向RM註銷自己。