![DAGScheduler-调度流程](http://p2.ttnews.xyz/loading.gif)
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集合进行调度。
閱讀更多 石頭渣渣 的文章