1. 程式人生 > >MR計算模型四

MR計算模型四

YARN是hadoop2.0中的資源管理系統,他的基本設計思想是將MRv1中的JobTracker的拆分成了兩個獨立的服務:一個全域性的資源管理器的ResourceManager和每個應用程式特有的ApplicationMaster

  1. --ResourceManager負責整個系統的資源管理和分配。
  2. --ApplicationMaster負責單個應用程式的管理。

Yarn總體上仍然是Master/Slave結構

  1. --ResourceManager為Master,負責對各個NodeManager上的資源進行統一管理和排程。
  2. --當用戶提交一個應用程式時,需要提供一個用於跟蹤和管理這個程式的ApplicationMaster,他負責向ResourceManager申請資源,並要求NodeManager啟動可以佔用一定資源的任務。
  3. --由於不同的ApplicationMaster被分佈到不同的節點上,因此他們之間不會相互影響。

YARN組成結構ResourceManager

  1. ResourceManager是一個全域性的資源管理器,負責整個系統的資源管理和分配。它主要有兩個元件構成:
  2. --排程器:排程器根據容量、佇列等限制條件,將系統中的資源分配給各個正在執行的應用程式。資源分配單位用一個抽象概念“資源容器”表示。
  3. --應用程式管理器:ApplicationManager負責管理整個系統中所有應用程式,包扣應用程式提交、與排程器協商資源以啟動ApplicationMaster、監控ApplicationMaster執行狀態並在失敗是重新啟動它等。

YARN組成結構ApplicationMaster

  1. 使用者提交的每個應用程式均包含了1個ApplicationMaster,主要功能包括:
  2. 與ResourceManager排程器協商以獲取資源
  3. 與NodeManager通訊以啟動/停止任務。
  4. 監控所有任務執行的狀態,並在任務執行失敗時重新為任務申請資源已重啟任務。

YARN組成結構NodeManager

  1. NodeManager是每個節點上的資源和工作管理員:
  2. 一方面,他定時向ResourceManager彙報本節點上的資源使用情況和各個Container的執行狀態。
  3. 另一方面,他會接收並處理來自ApplicationMaster的Container啟動/停止等各種請求。

YARN組成結構Container

  1. Container是yarn中的資源抽象,他封裝了某個節點上的多維度資源,入記憶體、CPU、磁碟、網路等。
  2. 當ApplicationMaster向ResourceManager申請資源時,ResourceManager為ApplicationMaster返回的資源便是用Container表示的。YARN會為每個人物分配一個container,且該任務只能使用該container中描述的資源。

YARN工作流程

  1. 當用戶想YARN中提交一個應用程式後,YARN將兩個階段執行該應用程式:
  2. 第一階段是啟動ApplicationMaster,
  3. 第二階段是由ApplicationMaster建立應用程式,為它申請資源,並監控它的整個執行過程,直到執行完畢。

詳細流程1

  1. 使用者向YARN中提交應用程式,包括ApplicationMaster程式、啟動ApplicationMaster的命令、使用者程式等。
  2. ResourceManager為該應用程式分配第一個container,並與對應的NodeManager通訊,要求他在這個container中啟動應用程式的ApplicationMaster。
  3. ApplicationMaster首先向ResourceManager註冊,這樣使用者可以直接通過ResourceManager檢視應用程式的執行狀態,然後她將為各個任務申請資源,並監控它的執行狀態,直到執行結束。

詳細流程2

  1. ApplicationMaster採用輪訓的方式通過RPC協議向ResourceManager申請和領取資源。
  2. 一旦ApplicationMaster申請到資源後,便於對應的NodeManager通訊,要求他啟動任務。
  3. NodeManager為任務設定好執行環境(包括環境變數、JAR包、二進位制程式等)後,將任務啟動命令寫到一個指令碼中,並通過執行該指令碼啟動任務。

詳細路程3

  1. 各個任務通過某個RPC協議向ApplicationMaster彙報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的執行狀態,從而可以在任務失敗是重新啟動任務。
  2. 在應用程式執行過程中,使用者可以隨時通過RPC向ApplicationMaster查詢應用程式的當前執行狀態。
  3. 應用程式執行完畢後,ApplicationMaster向ResourceManager登出並關閉自己。