文章出處

Hadoop學習筆記總結

01. YARN框架

1. 新一代的框架介紹

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

  • 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的詳細流程

不是完全正確,下面是一些解釋和更正:

  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也需要實現SparkAppMaster

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/
初接觸,記下學習筆記,還有很多問題,望指導,謝謝。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()