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集合进行调度。


分享到:


相關文章: