美文网首页
Spark DAG之SubmitStage

Spark DAG之SubmitStage

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

    划分Stage阶段完成后,调用submitStage(finalStage) 提交 Stage。

    submitStage

    查看submitStage方法

    submitStage方法的主要作用如图中注释,其涉及到三个重要集合:

    waitingStages 等待运行的Stage
    runningStages 正在运行的Stage
    failedStages 运行失败的Stage

    限于篇幅,关于submitStage中的其他方法不再详解。最后submitStage中的流程大致如下:


    上面流程图中父Stage是否执行完毕是如何判断的?
    def isAvailable: Boolean = _numAvailableOutputs == numPartitions
    如上,调用ShuffleMapStage的isAvailable方法判断。每当执行完一个Task会对变量_numAvailableOutputs加1,直至所有Task执行完,_numAvailableOutputs 就等于分区数,则代表 Stage 执行完毕。

    执行submitStage(finalStage),此时finalStage的值为ResultStage 4(参考第一幅图),submitStage方法执行完状态如下:

    集合 包含的Stage 状态
    runningStages ShuffleMapStage 0、ShuffleMapStage 2 转为ShuffleMapTask,发送给Executor执行
    waitingStages ShuffleMapStage 1、ShuffleMapStage 3、ResultStage 4 等待
    failedStages

    submitWaitingStages

    submitStage方法执行完毕后调用submitWaitingStages方法,提交正在等待的 Stage。

    submitWaitingStages的作用

    waitingStages ShuffleMapStage 1、ShuffleMapStage 3、ResultStage 4
    runningStages ShuffleMapStage 0、ShuffleMapStage 2
    • submitWaitingStages方法中调用submitStage依次提交waitingStages的Stage。我们假设执行submitWaitingStages前,ShuffleMapStage 0已执行完毕,ShuffleMapStage 2没有(其他情况也简单,不一一列举),那么submitWaitingStages方法执行后
    waitingStages ShuffleMapStage 3、ResultStage 4
    runningStages ShuffleMapStage 1、ShuffleMapStage 2
    Completed ShuffleMapStage 0

    可以看出调用一次submitWaitingStages方法不能完成所有Stage的提交,需要多次的调用,就是说,提交一个Stage必须其父Stage全部运算完毕。接下来看下哪些事件会触发submitWaitingStages。

    相关文章

      网友评论

          本文标题:Spark DAG之SubmitStage

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