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後續收到啓動任務請求後,如果文件已在本地緩存,則直接運行任務,否則等等文件緩存完再啓動

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