DAGScheduler-調度流程

DAGScheduler-調度流程

DAGScheduler的主要流程

1、應用程序通過對Spark API的調用,進行一系列RDD轉換構建出RDD之間的依賴關係後,調用DAGScheduler的runJob方法將RDD及其血緣關係中的所有RDD傳遞給DAGScheduler調度。

2、DAGScheduler的runJob方法通過調用DAGScheduler的submitJob方法向DAGSchedulerEventProcessLoop發送JobSubmitted事件。DAGSchedulerEventProcessLoop接受到JobSubmitted事件後,將JobSubmitted事件放入事件隊列(eventQueue)中。

3、DAGSchedulerEventProcessLoop內部的輪詢線程eventThread不斷從事件隊列(eventQueue)中獲取DAGSchedulerEvent事件,並調用DAGSchedulerEventProcessLoop的doOnReceive方法對事件進行處理。

4、DAGSchedulerEventProcessLoop的doOnReceive方法處理JobSubmitted事件時,將調用DAGScheduler的

handleJobSubmitted方法。handleJobSubmitted方法將對RDD構建Stage及Stage的依賴關係。

5、DAGScheduler首先把最上游的Stage中的Task集合提交給TaskScheduler,然後逐步將下游的Stage中的Task集合提交給TaskScheduler。TaskScheduler將對Task集合進行調度。


分享到:


相關文章: