Spark作业提交执行流程源码图
来源:互联网 发布:任务清单统计系统 php 编辑:程序博客网 时间:2024/05/17 07:36
环境:代码图基于Spark 2.2.1 工具:OmniGraffe
最近想完整梳理一下作业提交流程,通过自己的理解画图来学习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调度
阅读全文
0 0
- Spark作业提交执行流程源码图
- Spark作业执行流程
- spark的作业提交流程
- spark源码研究---作业提交
- Spark streaming 执行流程源码图
- 简单Spark作业编写与提交执行
- Spark jobServer搭建+提交作业执行
- Spark源码分析(一)作业提交
- Spark架构与作业执行流程
- spark on yarn作业执行流程
- Spark架构与作业执行流程简介
- Spark架构与作业执行流程简介
- Spark架构与作业执行流程简介
- Spark架构与作业执行流程简介
- Spark架构与作业执行流程简介
- Spark架构与作业执行流程简介
- spark入门之二 spark作业提交流程
- spark-application启动、作业提交源码分析、作业划分
- Ubuntu16.04+Anaconda3环境下安装caffe-cpu出现libboost1.55找不到的问题
- C++中的mutable关键字
- 51nod 1021 石子归并 -动态规划
- 企信通短信接口(HTTP)
- 解决ubuntu下编译安装Lua时提示lua.c:80:31: fatal error: readline/readline.h: 没有那个文件或目录
- Spark作业提交执行流程源码图
- 二维码与条形码的生成和识别使用
- hibernate常见面试题详解
- php 验证身份证号码
- Python入门(一)——环境的搭建,创建第一个Python项目:Hello World
- stm32时钟问题简单介绍
- LeetCode-724. Find Pivot Index
- SuperMap iMobile for Android常见问题解答集锦(十四)
- Git基础命令