Hadoop-理解yarn

YARN 集羣也分爲Master/Slave架構,主要由ResourceManager,NodeManager, ApplicationMaster,Container等組成。

  1. ResourceManager 全局資源管理器,負責整個系統的資源管理分配和任務調度。ResourceManager包含Scheduler調度器和應用程序管理器Application mananger。調度器只是負責資源的分配,資源分配的單位是container,應用程序管理器負責管理整個系統中所有應用程序,包括應用程序提交、與調度器協商資源以啓動ApplicationMaster、監控ApplicationMaster運行狀態並在失敗時重新啓動它等。

  2. NodeManager是每個節點上的資源和任務管理器,它會向ResourceManager定時彙報本節點的資源使用情況和各個Container的運行狀態,同時會接受處理來自ApplicationMaster的對Container的啓動/停止請求。NodeManager不會監視具體的任務,他僅監視Container的使用情況。

  3. Task是應用程序的具體任務。例如map任務,reduce任務等

  4. Container是Yarn中的資源的具體分配單位,封裝了CPU和內存資源的容器,相當於是一個Task的運行環境的具體抽象。從實現上看,Container是一個抽象類,裏面定義資源信息。在NodeManager節點上擁有許多動態創建的Container。NodeManager會將計算機的CPU和內存的一定值抽離成虛擬值,然後這些虛擬值根據配置組成多個Container,當應用提出申請的時候,會分配相應的Container。
    應用程序運行的Container也分爲兩類,一類是運行的ApplicationMaster的Container,一類是運行Task的Container。前者是由ResourceManager向內部的調度器申請和啓動,後者是又ApplicationMaster向ResourceManager申請,並由ApplicationMaster請求NodeManager啓動

  5. ApplicationMaster應用內程序管理者。它向ResourceManager申請資源,CPU內存等,並將資源分配給task。一個應用程序對應一個applicationMaster。在用戶提交一個應用程序的時候,會啓動一個ApplicationMaster實例,ApplicationMaster會啓動所需要的的Task,並監控task的運行狀態,進度等。應用程序執行完之後,ApplicationMaster會關閉自己並釋放Container。

MapReduce的處理過程:
在這裏插入圖片描述

  1. 提交MapReduce程序到ResourceManager
  2. ResourceManager分配container,並要求NodeManager啓動APPMaster。 AppMaster負責此應用程序的整個生命週期。
  3. AppMaster向ResourceManager註冊(註冊成功後,可以通過ResourceManager查看應用程序運行的狀態)。AppMaster請求各個應用程序所需要的container
  4. AppMaster請求NodeManager使用這些Container運行task。
  5. 各個Task通過RPC協議向AppMaster彙報自己的運行狀態和進度,如果task運行失敗,AppMaster可以要求重新啓動。當所有的task完成,AppMaster向ResourceManager註銷自己。

歡迎關注我的微信公衆號: 北風中獨行的蝸牛
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章