【Spark Core】從作業提交到任務調度完整生命週期淺析

引言

這一小節我們將就之前寫的幾篇博文,從提交Job,到Stage劃分,到任務分發,再到任務的執行,這一完整過程做一系統的回顧。在這一過程中理清思路,明確幾篇文章中涉及到的調度關係和邏輯關係。

Spark作業提交到執行過程


上面這個圖摘自張包峯的csdn博客,這個圖很清晰的描述了作業提交執行的整個過程,略去了細節原理,給人一種清晰直觀的流程概況。
通過該圖結合一下我之前的博文來描述一下文章的內容和相互關係:
DAGScheduler源碼淺析介紹了SparkContext通過DAGScheduler的runJob提交作業,其中通過DAGScheduler的事件隊列來處理JobSubmitted事件來處理提交的Job。
DAGScheduler源碼淺析2對DAGScheduler中涉及的兩個重要組件進行的補充介紹。
Stage生成和Stage源碼淺析介紹了將Job劃分爲Stage的過程,Spark根據RDD的依賴關係劃分Stage,最終將其封裝成taskset進行提交。
TaskScheduler源碼與任務提交原理淺析1介紹了TaskScheduler和SchedulerBackend的關係。
TaskScheduler源碼與任務提交原理淺析2介紹了Driver側的SchedulerBackend是如何進行資源分配和任務調度的,最終派發給Executor去執行。
任務執行機制和Task源碼淺析2介紹了Task在Executor中的執行過程。

Driver的任務提交過程


1、Driver程序的代碼運行到action操作,觸發了SparkContext的runJob方法。
2、SparkContext調用DAGScheduler的runJob函數。
3、DAGScheduler把Job劃分stage,然後把stage轉化爲相應的Tasks,把Tasks交給TaskScheduler。
4、通過TaskScheduler把Tasks添加到任務隊列當中,交給SchedulerBackend進行資源分配和任務調度。
5、調度器給Task分配執行Executor,ExecutorBackend負責執行Task。

參考資料

Spark源碼系列(四)圖解作業生命週期
Spark的任務調度

轉載請註明作者Jason Ding及其出處
GitCafe博客主頁(http://jasonding1354.gitcafe.io/)
Github博客主頁(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
簡書主頁(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)
Google搜索jasonding1354進入我的博客主頁

發佈了185 篇原創文章 · 獲贊 86 · 訪問量 94萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章