YARN 設計理念與基本架構

  YARN 的基本組成結構

  一. ResourceManager

  ResourceManager 是一個全局的資源管理器,負責整個集羣的資源管理和分配。它主要由兩個組件構成:調度器(Scheduler)和應用程序管理器(Applications Master,ASM)。

  1、調度器

  該調度器是一個 "純調度器",不再參與任何與具體應用程序邏輯相關的工作,而僅根據各個應用程序的資源需求進行分配,資源分配的單位用一個資源抽象概念 "Container" 來表示。Container 封裝了內存和 CPU。此外,調度器是一個可插拔的組件,用戶可根據自己的需求設計新的調度器,YARN 自身提供了 Fair Scheduler 和 Capacity Scheduler。

  2、應用程序管理器

  應用程序管理器負責管理整個系統中所有應用程序,包括應用程序的提交、與調度器協商資源以啓動 ApplicationMaster、監控 ApplicationMaster 運行狀態並在失敗時重新啓動它等。

  二. ApplicationMaster

  用戶提交的每個 Application 都要包含一個 ApplicatioNMaster,主要功能包括:

  向 RM 調度器申請資源(用 Container 表示)

  將從 RM 分配的資源分配給 Applcation 內部的任務

  與 NM 通信請求 啓動/停止 任務

  監控所有任務的運行狀態,並在失敗時重新爲任務申請資源以重啓任務

  三. NodeManager

  NM 是每個節點上的資源和任務管理器,一方面,它會定時地向 RM 彙報本節點上的資源使用情況和各個 Container 的運行狀態;另一方面,它接收並處理來自 AM 的 Container 啓動/停止 等各種命令。

  四. Container

  Container 是 YARN 中資源抽象,它封裝了某個節點上的內存和 CPU,當 AM 向 RM 申請資源時,RM 爲 AM 返回的資源便是用 Container 表示的。YARN 是使用輕量級資源隔離機制 Cgroups 進行資源隔離的。

  YARN 通信協議

  在 YARN 中,任何兩個需要相互通信的組件之間僅有一個 RPC 協議,而對於任何一個 RPC 協議,通信雙方有一端是 Client,另一端是 Server,且 Client 總是主動連接 Server。YARN 中有以下幾個主要的 RPC 協議:

  JobClient 與 RM 之間的協議:ApplicationClientProtocol,JobClient 通過該 RPC 協議提交應用程序、查詢應用程序狀態等

  Admin(管理員)與 RM 之間的協議:ResourceManagerAdministrationProtocol,Admin 通過該 RPC 協議更新系統配置文件,比如節點黑白名單、用戶隊列權限等

  AM 與 RM 之間的協議:ApplicationMasterProtocol,AM 通過該 RPC 協議向 RM 註冊並撤銷自己,併爲各個人物申請資源

  NM 與 RM 之間的協議:ResourceTracker,NM 通過該協議向 RM 註冊,並定時發送心跳信息彙報當前節點的資源使用情況和 Container 運行情況,並接收來自 AM 的命令

  AM 與 NM 之間的協議:ContainerManagermentProtocol,AM 通過該 RPC 協議要求 NM 啓動或者停止 Container

  YARN 工作流程

  YARN 的工作流程如上所示:

  Client 向 YARN 提交應用程序,其中包括 ApplicationMaster 程序及啓動 ApplicationMaster 的命令

  ResourceManager 爲該 ApplicationMaster 分配第一個 Container,並與對應的 NodeManager 通信,要求它在這個 Container 中啓動應用程序的 ApplicationMaster

  ApplicationMaster 首先向 ResourceManager 註冊

  ApplicationMaster 爲 Application 的任務申請並領取資源

  領取到資源後,要求對應的 NodeManager 在 Container 中啓動任務

  NodeManager 收到 ApplicationMaster 的請求後,爲任務設置好運行環境(包括環境變量、JAR 包、二進制程序等),將任務啓動腳本寫到一個腳本中,並通過運行該腳本啓動任務

  各個任務通過 RPC 協議向 ApplicationMaster 彙報自己的狀態和進度,以讓 ApplicationMaster 隨時掌握各個任務的運行狀態,從而可以在失敗時重啓任務

  應用程序完成後,ApplicationMaster 向 ResourceManager 註銷並關閉自己

  需要注意的是,實際情況中,集羣可能並沒有那麼多資源來滿足 ApplicationMaster 的資源請求,這是 ApplicationMaster 會採用輪循的方式不斷申請資源,直到申請到資源或 Application 結束爲止。

  大連正規的×××醫院 http://www.bhnkyy.net/

  專業包皮醫院 http://www.62671288.net/

  哪個醫院割包皮好 http://www.xasgnk.cn/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章