Spark作业提交执行流程源码图
2017-12-06 17:22
204 查看
环境:代码图基于Spark 2.2.1 工具:OmniGraffe
最近想完整梳理一下作业提交流程,通过自己的理解画图来学习Spark。
如上图,以RDD构建的DAG给DAGScheduler进行stage划分,DAGScheduler负责stage层面的提交和失败处理。
然后提交taskSet给TaskScheduler进行处理,TaskScheduler负责task层面的提交和失败处理,TaskScheduler提交task给远端的worker(即executor)实际执行。
上面流程中,在TaskScheduler提交task给executor之前,所有操作都是在driver端执行(如以yarn-client提交,则为提交作业所在机器),executor接受到task后执行task作业则是executor机器上执行。
上图是client以spark-submit形式提交作业后,从作业DAG划分、stage提交、taskSet提交,到task执行过程。步骤图上已经画出来,这里描述一下。
client submit作业,通过反射invoke执行用户代码main函数。
submit作业后,开始启动CoarseGrainedExecutorBackend和初始化SparkContext。
SparkContext初始化包括初始化监控页面SparkUI、执行环境SparkEnv、安全管理器SecurityManager、stage划分及调度器DAGScheduler、task作业调度器TaskSchedulerImpl和与Executor通信的调度端CoarseGrainedSchedulerBackend。
DAGScheduler将作业划分后,依次提交stage对应的taskSet给TaskSchedulerImpl。
TaskSchedulerImpl会submit taskset给driver端的CoarseGrainedSchedulerBackend后端。
CoarseGrainedSchedulerBackend会一个一个的LaunchTask
在远端的CoarseGrainedExecutorBackend接收到task提交event后,会调用Executor执行task
最终task是由TaskRunner的run方法内运行。
参考:
深入理解Spark DAG调度
最近想完整梳理一下作业提交流程,通过自己的理解画图来学习Spark。
1) 首先了解作业提交后RDD的流动情况
如上图,以RDD构建的DAG给DAGScheduler进行stage划分,DAGScheduler负责stage层面的提交和失败处理。
然后提交taskSet给TaskScheduler进行处理,TaskScheduler负责task层面的提交和失败处理,TaskScheduler提交task给远端的worker(即executor)实际执行。
上面流程中,在TaskScheduler提交task给executor之前,所有操作都是在driver端执行(如以yarn-client提交,则为提交作业所在机器),executor接受到task后执行task作业则是executor机器上执行。
2) 更细粒度了解作业提交过程
上图是client以spark-submit形式提交作业后,从作业DAG划分、stage提交、taskSet提交,到task执行过程。步骤图上已经画出来,这里描述一下。
client submit作业,通过反射invoke执行用户代码main函数。
submit作业后,开始启动CoarseGrainedExecutorBackend和初始化SparkContext。
SparkContext初始化包括初始化监控页面SparkUI、执行环境SparkEnv、安全管理器SecurityManager、stage划分及调度器DAGScheduler、task作业调度器TaskSchedulerImpl和与Executor通信的调度端CoarseGrainedSchedulerBackend。
DAGScheduler将作业划分后,依次提交stage对应的taskSet给TaskSchedulerImpl。
TaskSchedulerImpl会submit taskset给driver端的CoarseGrainedSchedulerBackend后端。
CoarseGrainedSchedulerBackend会一个一个的LaunchTask
在远端的CoarseGrainedExecutorBackend接收到task提交event后,会调用Executor执行task
最终task是由TaskRunner的run方法内运行。
参考:
深入理解Spark DAG调度
相关文章推荐
- SparkSubmit 提交作业源码流程粗略概述(含application中 driver、client、 executor的创建)
- Spark架构与作业执行流程简介
- Spark架构与作业执行流程简介
- spark core源码阅读-提交作业(三)
- Spark架构与作业执行流程简介
- 提交spark作业:如何在java中执行shell脚本
- spark入门之二 spark作业提交流程
- spark源码之Job执行(1)stage划分与提交
- Spark架构与作业执行流程简介
- spark源码之Job执行(1)stage划分与提交
- Spark作业的Stage划分,Task创建分发一直到提交给Spark的Executor的线程池执行全过程
- Spark1.3从创建到提交:1)master和worker启动流程源码分析
- Spark 源码阅读(1)——WordCount程序执行流程
- spark源码之Job执行(1)stage划分与提交
- Spark(五)Spark任务提交方式和执行流程
- spark源码之Job执行(1)stage划分与提交
- Spark架构与作业执行流程简介
- spark源码分析之DAGScheduler提交作业(job)过程、stage阶段说明
- Hadoop0.21.0源码流程分析(1)-客户端提交作业
- Hadoop源码解析之YARN客户端作业提交流程