天天看點

Yarn排程研究

1. YARN基本組成結構

  • RM=排程器+應用程式管理器ASM

    排程器:純排程器,不做與具體應用程式相關的工作,可插拔,使用者可以設計新的排程器

    ASM:負責整個系統中所有的應用程式,包括應用程式送出、與排程器協商資源以啟動AM,監控AM運作狀态并在失敗時重新開機

  • AM:每一個應用程式都要有一個AM,功能:與RM排程器協商擷取資源(用container表示);将得到的任務進一步配置設定給内部的任務;與NM通信以啟動/停止任務;監控所有任務運作狀态,并在任務運作失敗時重新為任務申請資源以重新開機
  • NM:定時向RM彙報本節點上資源使用情況和container運作狀态;接收并處理來自AM的container啟動/停止要求
  • Container:資源抽象,封裝了某個節點上的多元度資源,如記憶體、CPU、磁盤、網絡等。動态資源劃分機關(與MR1中slot差別)

2. YARN通信協定

  • Client-RM: ApplicationClientProtocol
  • Admin-RM: ResourceManagerAdministrationProtocol
  • AM-RM: ApplicationMasterProtocol
  • AM-NM: ContainerManagementProtocol
  • NM-RM: ResourceTracker

3. YARN工作流程

  • 使用者向yarn送出應用程式,包括AM程式、啟動AM指令、使用者程式
  • RM為應用程式配置設定第一個container,并與對應的NM通信,要求它在這個container啟動應用程式的AM
  • AM首先向RM注冊,使使用者可以直接通過RM檢視應用程式運作狀态,然後它為各個任務申請資源,監控運作狀态,直到結束
  • AM采用輪詢的方式通過RPC協定向RM申請和領取資源
  • 一旦AM申請到資源,與對應NM通信,要求它啟動任務
  • NM為任務設定好運作環境(環境變量、jar、二進制程式etc),将任務啟動指令寫到一個腳本,通過運作腳本啟動任務
  • 各個任務通過RPC協定向AM彙報自己狀态和進度,使用者可随時通過RPC向AM查詢應用程式目前運作狀态資訊
  • 運作完成後,AM向RM登出并關閉自己。

4. YARN分布式緩存

  • Yarn分布式緩存工作流程:
    • client将應用程式需要的檔案資源(外部字典、jar、二進制檔案)送出到hdfs;
    • client将應用程式送出到resourcemanager
    • RM與某個NM通信, NM收到指令後,從hdfs下載下傳檔案緩存,啟動AM
    • AM與RM通信,以請求和擷取計算資源
    • AM收到新配置設定的計算資源後,與對應的NM通信,以啟動任務
    • 如果該應用程式第一次在該節點上啟動任務,則NM首先從hdfs下載下傳檔案緩存到本地,然後啟動任務
    • NM後續收到啟動任務請求後,如果檔案已在本地緩存,則直接運作任務,否則等等檔案緩存完再啟動

繼續閱讀