Yet Another Resources Negotiatornode
從Hadoop2.0版本開始引入YARN,主要功能:網絡
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
只有一個
功能:
在mastermanager以外啓動NodeManager,通常與DataNode一一對應
功能:
每一個應用程序只有一個,負責應用程序的管理,資源申請和任務調度
功能:
任務運行環境的抽象,只有在分配任務的時候纔會抽象出一個container
功能:
ResourceManager
NodeManager
ApplicationMaster
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註銷,釋放掉佔用的資源