在DAGScheduler中提交Job,其中调用dagScheduler.handleJobSubmitted()方法创建ResultStage,在创建ResultStage的根据ShuffleDependency和普通dependency创建stage,普通OneToOneDependency创建ShuffleMapStage,ShuffleDependency创建ResultStage。最后提交stage,调用submitStage(finalStage)
在submitStage(finalStage)方法中,调用submitMissingTasks提交tasks,
taskScheduler.submitTasks(),根据本地化规则优先级是1.进程本地化2.节点本地化3.NO_PREF4.机架本地化和Any规则将task序列化LaunchTask到executor
其中在DAGScheduler中进行阶段的划分,根据依赖是否是ShuffleDependency划分stage
executor任务的执行
CoarseGrainedExecutorBackend中接收(receive方法中)到TaskScheduler的LaunchTask方法,执行executor.launchTask(this, taskDesc),启动一个线程池去运行task一个个的线程
流程总结图