當前位置: 首頁 / 技術分享 / 正文
YARN的Job提交流程

2022-12-29

資源 yarn 計算 容器 作業

  YARN是在做大數據開發的時候,最為常用的分布式計算中的資源調度框架。是Hadoop的核心組件之一。在Hadoop2.0的版本之前,MapReduce中集成了分布式計算的模塊和資源調度的模塊,這就使得分布式計算和資源調度之間的耦合度太高了,同時MapReduce的設計也會顯得非常的臃腫。在Hadoop2.0版本的時候,開發人員將MapReduce做了拆分,將分布式計算的模塊保留,將資源調度的模塊單獨的剝離出來,這就是YARN了。

  YARN最早期的設計是為了解耦,優化MapReduce。但是由于YARN的通用性足夠的優秀,以至于其他的分布式計算框架也都可以使用YARN來進行資源的調度?,F在很多的分布式計算框架,例如Spark、Flink等,雖然他們也都內置了資源調度的部分,但實際在使用中,依然會選擇使用YARN來進行資源的調度。

  那么在分布式計算中,我們將一個計算任務提交到YARN上進行運行的時候,YARN是如何去處理這個任務的呢?我們就以一個MapReduce的程序為例,來說明一下提交到YARN上之后,YARN都做了什么。

  在MapReduce的程序提交到YARN上運行的時候,有五個獨立的進程需要首先了解一下:

  ●YarnRunner: 用于提交作業的客戶端程序。

  ●ResourceManager: YARN資源管理器,負責協調集群上計算資源的分配。

  ●NodeManager: YARN節點資源管理器,負責啟動和監視集群中,單個節點上的計算容器(Container)。

  ●Application Master: 負責協調運行MapReduce作業的任務,它和任務都是在容器中運行的,這些容器由資源管理器分配,并由節點管理器進行管理。

  ●HDFS: 用于共享作業所需文件。

1

  1 調用waitForCompletion方法每秒輪詢作業的進度,內部封裝了submit()方法,用于創建JobCommiter實例,并且調用其的submitJobInternal方法。提交成功后,如果有狀態改變,就會把進度報告到控制臺。錯誤也會報告到控制臺

  2 JobCommiter實例會向ResourceManager申請一個新應用ID,用于MapReduce作業ID。這期間JobCommiter也會進行檢查輸出路徑的情況,以及計算輸入分片。

  3 如果成功申請到ID,就會將運行作業所需要的資源(包括作業jar文件,配置文件和計算所得的輸入分片元數據文件)上傳到一個用ID命名的目錄下的HDFS上。此時副本個數默認是10.

  4 準備工作已經做好,再通知ResourceManager調用submitApplication方法提交作業。

  5 ResourceManager調用submitApplication方法后,會通知Yarn調度器(Scheduler),調度器分配一個容器,在節點管理器的管理下在容器中啟動 application master進程。

  6 application master的主類是MRAppMaster,其主要作用是初始化任務,并接受來自任務的進度和完成報告。

  7 然后從HDFS上接受資源,主要是split。然后為每一個split創建MapTask以及參數指定的ReduceTask,任務ID在此時分配

  8 然后Application Master會向資源管理器請求容器,首先為MapTask申請容器,然后再為ReduceTask申請容器。(5%)

  9 一旦ResourceManager中的調度器(Scheduler),為Task分配了一個特定節點上的容器,Application Master就會與NodeManager進行通信來啟動容器。

  10 運行任務是由YarnChild來執行的,運行任務前,先將資源本地化(jar文件,配置文件,緩存文件)

  11 然后開始運行MapTask或ReduceTask。

  12 當收到最后一個任務已經完成的通知后,application master會把作業狀態設置為success。然后Job輪詢時,知道成功完成,就會通知客戶端,并把統計信息輸出到控制臺

分享: 更多

上一篇:YARN的調度器

下一篇:

好程序員公眾號

  • · 剖析行業發展趨勢
  • · 匯聚企業項目源碼

好程序員開班動態

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數據+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發 <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數據分析 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2019-07-22(北京)

    開班盛況
在線咨詢
試聽
入學教程
立即報名

Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號

美女裸体黄网站18禁免费_美女裸体黄网站啪啪18禁_美女裸体黄污18禁网站免费下载