【資源調度總綱】Yarn源碼剖析(零) --- spark任務提交到yarn的流程

前言

本系列的目的在於試圖剖析spark任務提交至hadoop yarn上的整個過程,從yarn的啓動,以及spark-submit提交任務到yarn上,和在yarn中啓動任務包括yarn組件之間的通信,用以提升自身知識儲備,記錄學習的過程爲目的,由於個人能力有限文章中或許有理解不到位的地方,敬請諒解。本系列側重的部分是yarn相關的部分,所以在spark-submit代碼剖析階段會缺少與spark相關的部分。分析的源碼基於spark_2.11版本以及Hadoop-2.7.4版本。

 

流程圖

爲了更好的理解yarn的資源調度,本篇文章將介紹spark任務提交到yarn上直至啓動的流程分析,在本系列的後面幾篇文章都會圍繞以下這個流程圖來做分析
 

1. spark-submit提交任務時在spark端就會封裝好資源請求,以及AM啓動的上下文,spark任務的AM是spark自己封裝的AM,其實各個計算引擎如果要在Yarn上提交任務,都會選擇在自己封裝一個新的AM來進行管理應用程序。


2. 將任務提交到RM上,RM就收請求任務的請求就會準備啓動AM


3. 啓動AM,啓動AM的過程非常的複雜,本系列文章爲專門拿一章出來專門講解。

 

4. AM向RM註冊自己。

 

5. AM成功註冊到RM上後,就會發送資源請求給ApplicationMasterService(RM的子服務,之前也說過RM是由衆多子服務租車的一個服務,所以這裏其實就是發給RM)

 

6. RM接受到請求後就去各個NM上請求Container


7. NM檢查自身節點後就會生成合適的Container返回給RM


8. AM會拿到NM返回給RM的Container,拿到之後會告知RM我要啓動這些Container


9. RM發送請求給NM去啓動Container


10. 最終啓動在匹配的節點啓動Container

 

系列閱讀指導

在後面的博文中,蛋撻將陸續分析以下幾個模塊:

1. 有興趣瞭解Yarn基礎方面的可以閱讀Yarn組件介紹

 

2. 在我們提交任務之前,有興趣瞭解Yarn啓動、以及RM,NM的心跳通信可以閱讀Yarn源碼剖析(一) --- RM與NM服務啓動以及心跳通信

 

3. 關於spark-submit端代碼的解析可以閱讀Yarn源碼剖析(二) --- spark-submit


4. 關於ApplicationMaster的啓動請可以閱讀Yarn源碼剖析(三)-- ApplicationMaster的啓動


5. 關於ApplicationMaster註冊到RM,以及AM申請Container和Container的啓動,可以閱讀Yarn源碼剖析(四)-- AM的註冊與資源調度申請Container及啓動


6. 在蛋撻不斷學習過程中也會不斷更新完善文章,以求輸出高質量的文章。

 

小結:

本文主要是針對後面對Yarn的研究做一個方向上的敲定,粗淺的介紹了spark任務是經過了怎麼樣的調度最終在Yarn上啓動的。

最後感謝在閱讀Yarn源碼中網上許多博客大牛給予的文章指導,在後文的分析中難免會借鑑到各位博主的一些想法和觀念,若有冒犯,請告知我刪除相關的內容。


作者:蛋撻

日期:2018.07.31

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