圖解YARN工做原理

      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組成。進程

        wKiom1WY43ayjjsPAAGqIBnXW80270.jpg

         >  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時如何進行處理的總體流程。

     wKiom1WY6kGTyleXAALeVXQYYi0085.jpg

        用戶向YARN中提交程序/做業,其中包括Application Master啓動、ApplicationMaster的命令及用戶程序等;ResourceManager爲做業分配第一個Container,並與對應的nodemanager通訊,要求它在這個Container中啓動改做業的Application master;Applicationmaster首先向Resourcemaster註冊,這樣用戶能夠直接經過Resourcemanager查詢做業的運行狀態,而後它將爲各我的物申請資源並監控任務的運行狀態,知道運行結束;Application經過RPC請求向Resourcemanager申請和領取資源。

         wKiom1WY7VfA19qwAALtP283jlU576.jpg         而後Applicationmaster 要求指定的nodemanager 節點啓動任務。

   wKioL1WY8FPzpC8cAAL-1TQ8Rcg452.jpg         啓動以後,去幹Resource Manager 指定的map tesk。

  wKioL1WY8NWDv3m7AAMCMXP8ctk774.jpg         等Map task幹完以後,通知application master。而後application master 去告知resouce manager。接下來Resource manager 分配新的資源給application master,讓它找人幹其它的活兒。

     wKiom1WY7_jhGoZMAAL5sya7sCk243.jpg         接下來Application master 通知nodemanager啓動新的Container準備幹活兒。該活兒的輸入是map task結束的輸出。

     wKiom1WY8K3ygmZXAALgs7uJjWs563.jpg         開始幹Reduce Task任務。

 wKioL1WY8tqCgp88AAJ-c3A-MOs153.jpg

          等各個節點上的Reduce task 都幹完了,將幹活兒的nodemanager的任務結果進行同步。作最後的reduce任務。

     wKiom1WY8avzq6MCAAKqzpwxOs0598.jpg     等都計算完了,最後將最終的結果輸出到hdfs。任務完成。


     經過圖解能夠更清楚的瞭解整個 YARN的工做流程。  

相關文章
相關標籤/搜索