一、Yarn 產生的背景Hadoop2 之前是由 HDFS 和 MR組成的,HDFS 負責存儲,MR 負責計算 。
一)MRv1 的問題
- 耦合度高:MR 中的 jobTracker 同時負責資源管理和作業控制兩個功能,互相制約 。
- 可靠性差:管理節點是單機的,有單點故障的問題 。
- 資源利用率低:基于 slot 的資源分配模型 。機器會將資源劃分成若干相同大小的 slot,并劃定哪些是 map slot、哪些是 reduce slot 。
- 無法支持多種計算框架:限定了只能用于 MapReduce 程序 。
它是一個通用資源管理系統,可為上層應用提供統一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處 。
二、Yarn 的基本架構一)Yarn 三大組件
- ResourceManager
- Nodemanager
- ApplicationMaster

文章插圖
Yarn依然是Master/Slave的結構:
- 在資源架構層面:RM 是 master、NM 是 slave
- 在應用運行期間:AM 是 master、container 是 slave
- 調度器(Scheduler):
- 根據容量、隊列等限制條件(如每個隊列分配一定的資源,最多執行一定數量的作業等),將系統中的資源分配給各個正在運行的應用程序 。
- 應用程序管理器(Applications Manager):
- 負責管理整個系統中所有應用程序,包括應用程序提交、與調度器協商資源以啟動 ApplicationMaster、監控 ApplicationMaster 運行狀態并在失敗時重新啟動等 。
- 定時地向 RM 匯報本節點上的資源使用情況和各個 Container 的運行狀態;
- 接收并處理來自 AM 的 Container啟動/停止等各種請求 。
- 與 RM 調度器協商以獲取資源(用 Container 表示);
- 將得到的任務進一步分配給內部的任務;
- 與NM 通信以啟動 / 停止任務;
- 監控所有任務運行狀態,并在任務運行失敗時重新為任務申請資源以重啟任務 。
- 封裝 NM 上的資源(hadoop2 僅支持 cpu 和內存,hadoop3 擴展網絡、硬盤、GPU 等資源);
- 不同于靜態的 slot,container 可以根據需要動態劃分 。

文章插圖
- 分布式環境下,需要涉及跨機器跨網絡通信,YARN底層使用RPC協議實現通信 。
- RPC是遠程過程調用(Remote Procedure Call)的縮寫形式 。基于RPC進行遠程調用就像本地調用一樣 。
- 在RPC協議中,通信雙方有一端是Client,另一端為Server,且Client總是主動連接 Server 的 。因此,YARN實際 上采用的是拉式(pull-based) 通信模型 。

文章插圖
- client 向 YARN 中提交應用程序,其中包括 AM 程序、啟動 AM 的命令、用戶程序等 。
- RM 為該應用程序分配第一個 Container,并與對應的 NM 通信,要求它在這個 Container中啟動應用程序的 AM 。
- AM 首先向 RM 注冊,這樣用戶可以直接通過 RM 查看應用程序的運行狀態,然后它將為各個任務申請資源,并監控它的運行狀態,直到運行結束,即重復步驟4~7 。
經驗總結擴展閱讀
- 【Azure 事件中心】Event Hub 無法連接,出現 Did not observe any item or terminal signal within 60000ms in 'flatMapMany' 的錯誤消息
- 2023年9月15日是買魚吉日嗎 2023年9月15日買魚行嗎
- 2023年農歷正月初七宜買鴨嗎 2023年1月28日買鴨好嗎
- 很可愛奶兇奶兇的句子 可愛萌炸了的小情話
- 父親剛去世的朋友圈心情短句 失去爸爸撕心裂肺感言
- 2023年1月28日適合裝修屋頂嗎 2023年1月28日裝修屋頂行嗎
- 23年的中秋節是幾月幾號
- 2023年八月十五是幾號
- 父親節有什么意義
- 2023年1月28日打官司好不好 2023年1月28日打官司吉日一覽表
