YARN框架

1. 新一代的框架介紹

YARN的職能就是將資源調度和任務調度分開。資源管理器ResourceManager全局管理全部應用程序計算資源的分配,每個job的ApplicationMaster負責相應任務的調度和協調。node

  • ResourceManager作的事情是負責協調集羣上計算資源的分配。調度、啓動每個 Job 所屬的 ApplicationMaster、另外監控 ApplicationMaster 的存在狀況。
  • NodeManager 功能比較專注,根據要求啓動和監視集羣中機器的計算容器container。負責 Container 狀態的維護,並向 RM 保持心跳彙報該節點資源使用狀況。
  • ApplicationMaster 負責一個 Job 生命週期內的全部工做。注意每個Job都有一個 ApplicationMaster。它和MapReduce任務同樣在容器中運行。AM經過與RM交互獲取資源,而後而後經過與NM交互,啓動計算任務。
  • 容器是由ResourceManager進行統一管理和分配的。有兩類container:一類是AM運行須要的container;另外一類是AP爲執行任務向RM申請的。
  1. YARN的做用:資源調度。
    ResourceManager------NodeManager
    主節點 ---------- 從節點
  2. ApplicationMaster做用:任務調度
    MRAppMaster ------ yarnchild
    動態產生 ------ 動態產生(能夠是Map,能夠是Reduce)

YARN中提交job的詳細流程
框架

不是徹底正確,下面是一些解釋和更正:ide

  1. RunJar裏面的Conf的配置引用決定了是在本地仍是集羣運行。是提交到集羣yarn_provider仍是本地運行local_provider。配置conf決定了是訪問遠程rpc仍是本地rpc。
  2. 步驟2中的staging_dir存放的是做業Jar、配置信息和分片信息;這個staging_dir默認是在HDFS上。
  3. 步驟5是ResourceManager將任務添加到任務隊列中。而後,ResourceManager將隨機挑選一個NodeManager管理下的Container分配給ApplicationMaster進程,做爲MRAppMaster任務調度中心。
  4. MRAppMaster會對做業初始化,接受任務的進度和完成報告;接受HDFS中存放的客戶端計算的輸入分片信息,對每個分片建立一個map任務對象和由mapreduce.job.reduces肯定的reduce對象。
  5. ApplicationMaster會爲該做業全部的map和reduce任務向ResourceManager請求容器(包括內存資源和CPU資源);附着心跳信息的請求包括map任務的本地化信息,如輸入分片所在的主機和機架信息。ResourceManager根據這些信息完成分配決策,理想狀況會將任務分配給數據本地化的節點。
  6. ResourceManager爲任務分配了容器後,ApplicationMaster就經過節點間通訊來啓動NodeManager中的容器,任務由容器中的YarnChild應用程序執行。在任務執行前,容器將任務須要的資源本地化,包括staging_dir中的做業Jar、配置和文件資源。
  7. ApplicationMaster負責啓動map和reduce任務,監控。並在全部任務完成後,向ResourceManager註銷本身,清理工做狀態。
  8. 在實際運行中,NodeManager節點會隨機被指定MRAppMaster進程,而後在任務節點出現yarnChild進程。yarnChild進程執行完map或reduce任務後會消失,MRAppMaster進程執行完這個job後會消失。

2. YARN框架的通用性

資源管理框架ResourceManager能夠爲MapReduce、Spark、Storm等計算框架實現資源調度。可是這些計算框架須要實現一個接口,AppMaster;資源管理器才能啓動這個AppMaster執行計算任務。
好比只須要MR實現MRAppMaster,Spark也須要實現SparkAppMasteroop

3. YARN提交job的源碼流程

4. YARN的HA

Yarn的Ha只能保證,在一個節點失效時,另外一臺能提供服務。可是不能像HDFS同樣智能。Application在執行一半時ResourceManager宕機,另外一個ResourceManager不能繼續提供任務的執行服務,由於中間數據太多,Hadoop未實現這種任務調度的切換。而HDFS的HA能夠保證殺掉active狀態的NameNode,文件依然可以上傳成功。學習

參考《Hadoop權威指南》和博客《http://dongxicheng.org/mapreduce-nextgen/nodemanager-container-launch-process/
初接觸,記下學習筆記,還有不少問題,望指導,謝謝。spa

相關文章
相關標籤/搜索