美文网首页
Spark DAG之 Submit Task

Spark DAG之 Submit Task

作者: 博弈史密斯 | 来源:发表于2018-05-15 14:19 被阅读0次

    概要

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

    Task介绍

    Task是执行计算的单元,Executor调用Task对象的runTask方法完成计算。查看定义

    Task有两个子类,并且和Stage的类型存在对应关系,即Stage会转为对应的Task,如下

    Task 对应的Stage
    ShuffleMapTask ShuffleMapStage
    ResultTask ResultStage

    最后,UML如下


    submitMissingTasks

    上一篇介绍了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
    ShuffleMapStage rdd: RDD shuffleDep: ShuffleDependency
    ResultStage rdd: RDD func: (TaskContext, Iterator[_]) => _

    Stage转为Task

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

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

    send Task

    最后一步,发送Task到Executor


    至此,submitMissingTasks方法执行完毕,Task也被发送Executor。

    总结

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

    1. 获取preferred location。
    2. broadcast taskBinary。
    3. Stage转为Task。
    4. send Task。

    相关文章

      网友评论

          本文标题:Spark DAG之 Submit Task

          本文链接:https://www.haomeiwen.com/subject/vogedftx.html