Spark: Job in detail

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark: Job in detail相关的知识,希望对你有一定的参考价值。

1、sc.runJob -> dagScheduler.runJob -> submitJob  

2、DAGSchedueler::submitJob 会创建 JobSubmitted 的 event 发给内嵌类 eventProcessActor

3、eventPRocessActor 在接收到 JobSubmmitted 之后调用 processEvent 处理函数

4、job 到 stage 的转换,生成 finalStage 并提交运行,关键是调用 submitStage

5、在 SubmitStage 中会计算 stage 之间的依赖关系,依赖关系分为宽依赖和窄依赖两种

6、如果计算中发现当前的 stage 没有任何依赖或者所有的依赖都已经准备完毕,则提交 task

7、提交 task 是调用函数 submitMissingTasks 来完成

8、task 真正运行在哪个 worker 上由 TaskScheduler 来管理,也就是 submitMissingTasks 会调用 TaskScheduler::submitTasks

9、TaskSchedulerImpl 中会根据 Spark 的当前运行模式来创建相应的 backend,如果是在单机运行则创建 LocalBackend

10、LocalBackend 收到 TaskSchedulerImpl 传递进行的 ReceiveOffers 事件

11、receiverOffers -> executor.launchTask -> TaskRunner.run

以上是关于Spark: Job in detail的主要内容,如果未能解决你的问题,请参考以下文章

总结Spark优化-多Job并发执行

spark--job和DAGScheduler源码

spark中job,stage,task的关系

命名Spark Job

基于容器云提交spark job任务

从spark架构中透视job