yarn的元件和啟動job的流程

2021-07-03 10:37:47 字數 1666 閱讀 3371

nm是每個節點上的框架**,主要負責啟動應用所需的容器,監控資源(記憶體,cpu,磁碟,網路等)的使用情況並將之匯報給排程器。

am主要負責同排程器協商以獲取合適的容器,並跟蹤這些容器的狀態和監控其進度。

am負責計算應用程式所需的資源量,比如mapreduce的input-splits,並把他們轉化成排程器可以理解的協議。

排程器會盡量匹配該表中的資源;如果某個特定機器上的資源是不可用的,排程器會提供同乙個機架或者不同機架上的等量資源代替之。有些情況下,由於整個集群非常忙碌,am獲取的資源可能不是最合適的,此時它可以拒絕這些資源並請求重新分配。

每個節點上裝有乙個nm,主要的職責有:

(1)為應用程式啟動容器,同時確保申請的容器使用的資源不會超過節點上的總資源。

(2)為task構建容器環境,包括二進位制可執行檔案,jars等。

(3)為所在的節點提供了乙個管理本地儲存資源的簡單服務,應用程式可以繼續使用本地儲存資源即使它沒有從rm那申請。比如:mapreduce可以使用該服務程式儲存map task的中間輸出結果。

排程器收集所有正在執行的應用程式的資源請求並構建乙個全域性規劃進行資源分配。排程器會根據應用程式相關的約束(如合適的機器)和全域性約束(如佇列資源總量,使用者可提交作業總數等)分配資源。

排程器使用與容量排程類似的概念,採用容量保證作為基本的策略在多個應用程式間分配資源。

排程器的排程策略如下:

· 選擇系統中「服務最低」的佇列(如何定義服務最低?可以是資源利用量最低的佇列,即:已使用的資源與總共可用資源比值最小)

· 從該佇列中選擇優先順序最高的作業

· 盡量滿足該作業的資源請求

asm負責管理系統中所有應用程式的am,asm負責啟動am,監控am的執行狀態,在am失敗時對其進行重啟等。

為了完成該功能,asm主要有以下幾個元件:

(1) schedulernegotiator:與排程器協商容器資源,並返回給am

(2) amcontainermanager:告知nm,啟動或者停止某個am的容器

(3) ammonitor:檢視am是否活著,並在必要的時候重啟am

每個應用程式均會有乙個am,主要職責有:

(1) 與排程器協商資源

(2) 與nm合作,在合適的容器中執行對應的task,並監控這些task執行

(3) 如果container出現故障,am會重新向排程器申請資源

(4) 計算應用程式所需的資源量,並轉化成排程器可識別的格式(協議)

(5) am出現故障後,asm會重啟它,而由am自己從之前儲存的應用程式執行狀態中恢復應用程式。

yarn排程器與am之間僅有乙個api:

response allocate(listask, listrelease);

am使用乙個resourcerequest列表請求特定資源,並同時可要求釋放一些排程器已經分配的容器。

response包含三方面內容:新分配的容器列表,自從上次am與rm互動以來已經計算完成的容器的狀態(包含該容器中執行task的詳細資訊),當前集群中剩餘資源量。 am收集完成容器的資訊並對失敗的任務作出反應。資源剩餘量可用於am調整接下來的資源請求,如mapreduce am可使用該資訊以合理排程maps和reduces從而防止產生死鎖。

參考文獻

下一代apache hadoop mapreduce框架的架構

MapReduce提交job到Yarn的流程學習

6 在客戶端執行乙個mapreduce程式時,能看到map和reduce任務執行的進度百分比,這個是am在執行initialize job後建立的薄記物件完成的,這個薄記物件會收集執行在分布式各個節點上任務的進度,彙總後定時傳送給client。7 在執行mapreduce程式時,會先執行map任務然...

YARN的設計思想和功能元件簡介

a yarn yet another resource negotiator b yarn的基本思想 hadoop1.x和hadoop2.x框架對比圖 hadoop2.x框架圖 a 乙個純粹的排程器 b 根據應用程式的資源請求嚴格限制系統的可用資源 c 在保證容量 公平性及服務等級的情況下,優化集群...

YARN的主要元件及功能簡介

總體概述 主要結構 rm 負責整個系統的資源分配,主要由兩個元件構成 排程器 scheduler 應用程式管理器aplications master asm 排程器 排程器只是單純的排程,不參與任何具體的計算失誤,也不負責跟蹤程式的執行狀態,執行失敗的時候,也不負責程式的kill,重啟等,這些都交由...