SparkCore——詳述Spark作業調度

前言

我們在之前的博客中講過,TaskScheduler負責每個具體任務的實際物理調度,DAGScheduler負責將作業拆分成爲不停階段的具體有依賴關係的多批任務,可以理解爲DAGScheduler負責任務的邏輯調度。
本篇博客,結合這段時間看過的一些書籍,南國在這裏重點回顧一下Spark中作業調度的相關知識。

作業調度的頂層邏輯概述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

作業調度的具體工作流程

作業調度的基本流程如下圖所示:
在這裏插入圖片描述
在這裏插入圖片描述

調度階段的拆分

在這裏插入圖片描述
構建一個新的Stage,這個新的Stage的輸出結果的分區方式,則由ShuffleDependency中的Partition對象就決定。

調度階段的提交

在這裏插入圖片描述
在這裏插入圖片描述
此外,每完成一次DAGSchduler的事件循環,也會觸發一次從等待和失敗列表中掃描並提交Stage的調用過程。

任務集的提交

在這裏插入圖片描述

完成狀態的監控

簡單來說,這是通過對外(主要是對TaskSchduler)暴露一系列的回調函數來實現的。對於TaskScheduler來說,這些回調函數主要包括任務的開始結束失敗、任務集的失敗,DAGSchduler根據這些任務的生命週期進一步維護作業和調度階段的狀態信息。

任務結果的獲取

在這裏插入圖片描述
在這裏插入圖片描述

調度池和調度模式分析

在這裏插入圖片描述
在這裏插入圖片描述

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