Spark DAG之SubmitStage
来源:互联网 发布:淘宝模特多少钱一天 编辑:程序博客网 时间:2024/06/08 09:57
概要
介绍提交Stage的流程,继续沿用Spark DAG之划分Stage中的例子。
前提
上篇博客Spark DAG之划分Stage介绍了划分Stage的流程,举的例子最后生成的Stage如下
划分Stage阶段完成后,DAGScheduler的handleJobSubmitted方法提交Stage,如下
本篇博客重点就是讲解上图中的两个方法,其中的finalStage变量以第一幅图为例。
submitStage
查看submitStage方法
submitStage方法的主要作用如图中注释,其涉及到三个重要集合
限于篇幅,关于submitStage中的其他方法不再详解。最后submitStage中的流程大致如下
上面流程图中父Stage是否执行完毕是如何判断的?
-
如上图,调用ShuffleMapStage的isAvailable方法判断。每当执行完一个Task会对变量_numAvailableOutputs加1,直至所有Task执行完,_numAvailableOutputs等于分区数。
以Spark DAG之划分Stage中切分的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方法,查看该方法
该方法非常简单,职责如下
- 拷贝集合waitingStages到waitingStagesCopy,清空waitingStages。
- 遍历waitingStagesCopy中的Stage,调用submitStage方法。
submitStage的流程上面刚介绍过,submitWaitingStages的流程如下
submitWaitingStages的作用
- 结合Spark DAG之划分Stage的例子,submitStage方法执行后,集合中元素如下
- submitWaitingStages方法中调用submitStage依次提交waitingStages的Stage。我们假设执行submitWaitingStages前,ShuffleMapStage 0已执行完毕,ShuffleMapStage 2没有(其他情况也简单,不一一列举),那么submitWaitingStages方法执行后
可以看出调用一次submitWaitingStages方法不能完成所有Stage的提交,需要多次的调用,就是说,提交一个Stage必须其父Stage全部运算完毕。接下来看下哪些事件会触发submitWaitingStages。
再次触发submitWaitingStages方法的事件
- Spark DAG之SubmitJob中介绍了DAGSchedulerEvent,具体的事件类型如下,DAGScheduler对所有事件的处理都会再调用一次submitWaitingStages。
总结
围绕submitStage和submitWaitingStages方法,通过流程图,介绍如何提交Stage,大致如下
- 调用submitStage提交Stage。
- DAGScheduler处理定义的各种事件都会调用一次submitWaitingStages方法,submitWaitingStages继续调用submitStage提交处于waiting状态的Stage,直至所有Stage执行完毕。
1 0
- Spark DAG之SubmitStage
- Spark DAG之SubmitJob
- Spark DAG之SubmitTask
- Spark DAG之划分Stage
- Spark DAG概述
- spark源码学习(四):Resultstage的产生和submitstage提交
- Spark任务提交与执行之RDD的创建、转换及DAG构建
- Spark DAG stage与 Drill DAG execution tree
- DAG之最短路
- DAG之最短路
- Spark中RDD DAG图的建立
- Exchange 2010 之DAG安装
- Excahnge 2010之DAG配置
- 嵌套矩阵之DAG类型
- DAG问题之矩形嵌套
- DAG
- DAG
- Spark 源码解析 : DAGScheduler中的DAG划分与提交
- SpringMVC实现文件上传
- 二、Climbing Worm
- 网站迁站工作步骤
- Nginx访问图片403错误
- linux的sort命令用法
- Spark DAG之SubmitStage
- windows编程实验四
- 420
- Spring read-only="true" 只读事务的一些概念
- nyoj 155求高精度幂
- Android手机USB调试安全闲扯
- HttpClient入门
- 三、Nasty Hacks
- 微信小程序之侧栏分类 —— 微信小程序实战商城系列(1)