spark源码分析:spark运行总流程

本文详细解析了Spark作业从提交到执行的整个流程,包括Driver程序触发Action操作启动作业、DAGScheduler如何划分Stage并创建Task,以及TaskScheduler如何调度Task至Executor执行等关键步骤。

整体流程图:



1、Driver程序的代码运行到action操作,触发了SparkContext的runJob方法。

2、SparkContext调用DAGScheduler的runJob函数。

3、DAGScheduler把Job划分stage,然后把stage转化为相应的Tasks,把Tasks交给TaskScheduler。

4、通过TaskScheduler把Tasks添加到任务队列当中,交给SchedulerBackend进行资源分配和任务调度。

5、调度器给Task分配执行Executor,ExecutorBackend负责执行Task。


函数调用图:

spark提交作业:
sparkContext.runjob
->dagScheduler.runjob
->dagScheduler.submitJob
->DAGSchedulerEventProcessLoop.doOnReceive
->dagScheduler.handleJobSubmitted

stage划分以及提交:
dagScheduler.handleJobSubmitted
-->dagScheduler.submitStage
-->dagScheduler.submitMissingTasks
-->taskScheduler.submitTasks

task调度以及执行:
TaskSchedulerImpl.submitTasks
SchedulableBuilder.addTaskSetManager
CoarseGrainedSchedulerBackend.reviveOffers
CoarseGrainedSchedulerBackend.makeOffers
TaskSchedulerImpl.resourceOffers
CoarseGrainedSchedulerBackend.aunchTasks
CoarseGrainedExecutorBackend.receive
.Executor.launchTask

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值