Hadoop(三)YARN

Yet Another Resources Negotiatornode

從Hadoop2.0版本開始引入YARN,主要功能:網絡

  • 集羣資源管理系統
  • 負責集羣的統一管理和調度
  • 與客戶端交互,處理客戶端請求

 

1、基本架構

 

Master/Slave架構架構

資源管理和節點管理器組成app

集羣的機器啓動nodemanager進程,通常與HDFS的datanode一一對應oop

resourcemanager負責機器資源的統一調度,通常不和nodemanager共同運行於一個節點,nodemanager負責節點資源的監控和管理,其所在節點上的資源狀況和運行的任務的狀態都會經過nodemanager向resourcemanager進行反饋,這種反饋是經過心跳的方式反饋,週期性彙報blog

resourcemanager負責接收客戶端提交的做業請求,是一些計算任務,並非上傳文件,上傳文件是上傳到namenode進程

接收到這些任務後,會調度這些任務在集羣中運行,在YARN中真正執行任務的是container,container是cpu和內存等計算資源抽象的容器,真實的任務是運行在container中的內存

resourcemanager調度一個任務的時候首先會和nodemanager進行通訊,要求nodemanager啓動一個container,container會根據運行的程序封裝須要的內存、cpu和網絡等資源資源

啓動完container,針對程序還會啓動applicationmaster,每一個程序都有程序管理器,負責具體任務的資源申請、任務調度和監控。向resourcemanager申請資源,申請到後與nodemanager進行通訊,要求nodemanager啓動container執行具體任務io

任務執行過程當中不斷與applicationmaster進行通訊,彙報任務執行狀況和狀態、

客戶端經過resourcemanager得到applicationmaster的鏈接信息,與applicatinomaster創建鏈接,不斷與applicationmaster進行通訊,獲取任務最新的進度信息,直到任務結束,釋放佔用的資源,container關閉

通常兩個resourcemanager,一個active一個standby

 

2、核心組件

1.ResourceManager

只有一個

功能:

  • 處理客戶端請求
  • 啓動/監控ApplicationMaster
  • 監控NodeManager健康狀態
  • 資源分配和調度

2.NodeManager

在mastermanager以外啓動NodeManager,通常與DataNode一一對應

功能:

  • 單個節點上的資源監控和管理
  • 定時向ResourceManager彙報本機的資源使用狀況
  • 處理來自ResourceManager的請求,爲做業的執行分配Container
  • 處理來自ApplicationMaster的請求,啓動和中止Container

 

3.ApplicationMaster

每一個應用程序只有一個,負責應用程序的管理,資源申請和任務調度

功能:

  • 與ResourceManager協商爲應用程序申請資源
  • 與NodeManager通訊啓動/中止任務
  • 監控任務運行狀態和失敗處理

 

4.Container

任務運行環境的抽象,只有在分配任務的時候纔會抽象出一個container

功能:

  • 任務運行資源(節點、內存、CPU)
  • 任務啓動命令
  • 任務運行環境

 

3、YARN容錯

ResourceManager

  • 基於zookeeper實現高可用 啓動多個ResourceManager

NodeManager

  • NodeManager故障將致使運行在該節點的任務失敗,任務失敗後,ResourceManager將失敗任務通知對應的ApplicationMaster
  • ApplicationMaster決定如何處理失敗的任務

ApplicationMaster

  • ApplictationMaster失敗後,由ResourceManager負責重啓

 

4、運行流程

 

 

1.客戶端向ResourceManager發送提交做業的請求,收到請求後向客戶端返回做業ID

2.ResourceManager會找其中的一個nodemanager向它發送請求來分配container,nodemanager啓動container,在container中啓動一個ApplicatinMaster,ResourceManager會監控這個ApplicationMaster運行狀態

ApplicationMaster啓動後會計算其負責的做業須要多少個map,多少個reduce,運行這些任務須要多少cpu,多少內存

3.ApplicationMaster向ResourceManager註冊,註冊成功後開始申請做業運行須要的資源,當resourcemanager將資源分配給ApplicationMaster以後,ApplicationMaster接收到這些資源,信息當中包含這些資源是由哪些nodemanager提供的,

4.ApplicationMaster會和對應的NodeManager進行通訊,給nodemanager分配container,要求nodemanager啓動container並啓動對應的任務

運行在container中的任務會向ApplicatinoMaster運行狀態和進度

在運行過程中,客戶端經過ResourceManager獲取到ApplicationMaster通訊地址,客戶端與ApplicationMaster進行通訊,週期性的獲取到做業運行的狀態,由於做業在運行中會週期性向ApplicationMaster進行彙報狀態和進度

任務都完成以後,做業就結束了AM會像RM註銷,釋放掉佔用的資源

相關文章
相關標籤/搜索