YARN 即MapReduce V2版本。相比MapReduce V1 它有不少優勢: node
1. 分散了jobTracker 的任務。資源管理任務由資源管理器負責,做業啓動、運行和監測任務由分佈在集羣節點上的應用主題負責。這樣大大減緩了MapReduce V1中jobTracker 單點瓶頸和單點風險的問題,大大提升了集羣的擴展性和可用性。
編程
2.在MapReduce V2中ApplicationMaster是一個用戶可定製的部分,所以用戶能夠針對編程模型編寫本身的應用主題程序。這樣大大擴展了MapReduce V2 的適用範圍。app
3.在資源管理上使用Zookper實現故障轉移。當資源管理故障時,備用資源管理器將根據保存在ZooKeeper中的集羣狀態快速啓動。MapReduce V2支持應用程序指定檢查點。這就能保證應用主題在失敗後能迅速根據hdfs上的狀態的狀態重啓。這兩個措施大大提升了MapReduce V2的可用性。ide
4.集羣資源統一組織成資源容器,而不像在MapReduce V1中Map池和Reduce池有所差異。這樣只要有任務請求資源,調度器就會將集羣中的可用資源分配給請求任務,而無關資源類型。這就大大提升了資源的利用率。spa
其實YARN還有不少優勢,在這裏就不盡興一一列舉。主要說一下YARN的工做流程。3d
YARN 具體由哪些部分組成:blog
YARN共有ResourceManager、NodeManager、JobHistoryServer、Containers、Application Master、job、Task、Client組成。進程
> Resource Manager: 一個Cluster 只有一個,負責資源調度、資源分配等工做。內存
> JobHistory Server: 負責查詢job運行進度及元數據管理。資源
> nodemanager:運行在datanode節點,負責啓動Application和對資源的管理。
> Containers: Container經過ResourceManager分配。包括容器的cpu、內存等資源。
> Application master:通俗來講Application master 至關於包工頭,Resource Manager 至關於經理。Resource Manager 首先將任務給Application master,而後Application master 在將Resource manager的指示傳達給各個 nodemanager(至關於工人)進行幹活兒。每一個application只有一個Applicationmaster,運行在node manager節點,Application master是由Resource manager指派的。
> job:一個mapper、一個Reducer或一個進程的輸入列表。job也能夠叫作Application。
> task:一個具體作mapper或Reducer的獨立的工做單元。task運行在nodemanager 的Container中。
> client:一個提交給Resource manager的一個Application程序。
已經知道了YARN由哪些工做單元組成,接下來就來講說一個job時如何進行處理的總體流程。
用戶向YARN中提交程序/做業,其中包括Application Master啓動、ApplicationMaster的命令及用戶程序等;ResourceManager爲做業分配第一個Container,並與對應的nodemanager通訊,要求它在這個Container中啓動改做業的Application master;Applicationmaster首先向Resourcemaster註冊,這樣用戶能夠直接經過Resourcemanager查詢做業的運行狀態,而後它將爲各我的物申請資源並監控任務的運行狀態,知道運行結束;Application經過RPC請求向Resourcemanager申請和領取資源。
而後Applicationmaster 要求指定的nodemanager 節點啓動任務。
啓動以後,去幹Resource Manager 指定的map tesk。
等Map task幹完以後,通知application master。而後application master 去告知resouce manager。接下來Resource manager 分配新的資源給application master,讓它找人幹其它的活兒。
接下來Application master 通知nodemanager啓動新的Container準備幹活兒。該活兒的輸入是map task結束的輸出。
等各個節點上的Reduce task 都幹完了,將幹活兒的nodemanager的任務結果進行同步。作最後的reduce任務。
經過圖解能夠更清楚的瞭解整個 YARN的工做流程。