Spark DAG之SubmitTask

概要

介绍Stage转为Task,提交给Executor运行的过程。

Task介绍

Task是执行计算的单元,Executor调用Task对象的runTask方法完成计算。查看定义
这里写图片描述
Task有两个子类,并且和Stage的类型存在对应关系,即Stage会转为对应的Task,如下

Task对应的Stage
ShuffleMapTaskShuffleMapStage
ResultTaskResultStage

最后,UML如下
这里写图片描述

submitMissingTasks

上一篇博客Spark DAG之SubmitStage介绍了submitStage方法,当提交的Stage没有父Stage或父Stage已执行完毕时,调用submitMissingTasks方法,查看该方法

这是submitMissingTasks的开始部分,作用如图中注释。

preferred location

接着查看submitMissingTasks方法,根据cache信息和RDD的preferredLocations获取preferred location
这里写图片描述

broadcast taskBinary

把Stage的RDD和ShuffleDependency(或func)广播到Executor

Stage类型不同,广播内容不同

Stage广播内容1广播内容2
ShuffleMapStagerdd: RDDshuffleDep: ShuffleDependency
ResultStagerdd: RDDfunc: (TaskContext, Iterator[_]) => _

Stage转为Task

根据Stage类型,生成对应的Task,taskBinary变量是上面刚介绍的,广播到Executor节点的

上图中可以看到另一个重要信息,Partition和Task数的对应关系,RDD的一个Partition对应生成一个Task

send Task

最后一步,发送Task到Executor

关于TaskScheduler提交Task更多的内容,参考我的博客Spark 任务调度之Driver send Task
至此,submitMissingTasks方法执行完毕,Task也被发送Executor。

总结

介绍Task类,及submitMissingTasks方法中Stage转为Task并提交的细节,主要步骤如下

  1. 获取preferred location。
  2. broadcast taskBinary。
  3. Stage转为Task。
  4. send Task。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值