这是Spark官方给的图,大致意思就是:

四个步骤
1.构建DAG(有向无环图)(调用RDD上的方法)
2.DAGScheduler将DAG切分Stage(切分的依据是Shuffle),将Stage中生成的Task以TaskSet的形式给TaskScheduler
3.TaskScheduler调度Task(根据资源情况将Task调度到相应的Executor中)
4.Executor接收Task,然后将Task丢入到线程池中执行

DAG 有向无环图(数据执行过程,有方法,无闭环)

虽然是程序的起点和终点都是hdfs,但是不是同一个文件,如果图中的out文件存在的话就会报错。

DAG描述多个RDD的转换过程,任务执行时,可以按照DAG的描述,执行真正的计算(数据被操作的一个过程)

DAG是有边界的:开始(通过SparkContext创建的RDD),结束(触发Action,调用run Job就是一个完整的DAG)

一个RDD只是描述了数据计算过程中的一个环节,而DAG由一到多个RDD组成,描述了数据计算过程中的所有环节(过程)

一个Spark Application中是有多少个DAG:一到多个(取决于触发了多少次Action)

为什么要切分Stage?
一个复杂的业务逻辑(将多台机器上具有相同属性的数据聚合到一台机器上:shuffle)
如果有shuffle,那么就意味着前面阶段产生的结果后,才能执行下一个阶段,下一个阶段的计算要依赖上一个阶段的数据。
在同一个Stage中,会有多个算子,可以合并在一起,我们称其为pipeline(流水线:严格按照流程、顺序执行)


Spark运行时,首先启动一个客户端(Driver),也可以时spark-shell客户端

spark-submit --master spark://hadoop-master:7077 --executor-memory 4g --total-executor-cores 12

1,客户端和Master建立链接并且申请资源,每个executor需要4g内存,总共需要12核
2,master进行资源调度(节点向master注册的时候,会将自己的资源情况一并提交给master)
3,master和worker进行RPC通信,启动executor
4,启动各个worker节点上的executor
5,executor和Driver端进行通信
6,RDD触发Action后,会根据最后这个RDD往前推断依赖关系(宽依赖或者窄依赖),遇到Shuffle就切分Stage,会递归切分,递归的出口是RDD没有父RDD
7,DAGScheduler切分完Stage后,会进行提交Stage,先提交前面的Stage,前面的Stage执行完之后再提交后面的Stage,每一个stage都会产生很多业务逻辑相同的Task,然后以TaskSet的形式将task传递给TaskScheduler,然后TaskScheduler将Task进行序列化,根据资源情况,将task发送给Executor
8,将Driver端产生的task发送给executor
9,executor在接收到task之后,先将task进行反序列化,然后将task用一个实现了runnable接口的实现类包装起来,然后将该包装类丢入线程池,包装类实现的run方法就会被执行,进而调用task的计算逻辑。

以上就是Spark的执行流程。

Spark任务执行流程相关推荐

  1. 【大数据开发】SparkCore——Spark作业执行流程、RDD编程的两种方式、简单算子

    文章目录 一.Spark作业执行流程(重点) 二.RDD编程 2.1创建RDD的⼆种⽅式: 2.2Transformation算⼦ 2.3Action算子 三.简单算子(必须掌握) 3.1 map.m ...

  2. Spark Streaming 执行流程

    Spark Streaming 是基于spark的流式批处理引擎,其基本原理是把输入数据以某一时间间隔批量的处理,当批处理间隔缩短到秒级时,便可以用于处理实时数据流. 本节描述了Spark Strea ...

  3. springsecurity原理执行流程_3. Spark原理-执行流程解析

    概念 Job 当在RDD上执行Action操作时就会提交一个Job.这个Job会将RDD分为多分,并将每份RDD提交到集群执行. Stage 当一个Job提交后将分解为多个Stage. Task 一个 ...

  4. Spark SQL执行流程解析之 sql执行顺序

    一.Spark SQL模板解析 Spark Sql 关键字执行顺序跟Sql执行顺序类似: 1.先将from前两表做笛卡尔积加载进来形成虚拟表vt1, 2.on条件后为真的插入虚拟表形成vt2, 如果包 ...

  5. spark 执行流程及各组件执行

    Spark初始化: 1.Spark的启动流程 sbin/start-all.sh -> sbin/start-master.sh -> sbin/start-slaves.sh(ssh) ...

  6. Spark架构与作业执行流程简介

    2019独角兽企业重金招聘Python工程师标准>>> Spark架构与作业执行流程简介 博客分类: spark Local模式 运行Spark最简单的方法是通过Local模式(即伪 ...

  7. Spark执行流程与原理

    Spark执行计划分析: https://blog.csdn.net/zyzzxycj/article/details/82704713 ----------- 先贴一张sql解析的总流程图: 第一次 ...

  8. 追源索骥:透过源码看懂Flink核心框架的执行流程

    https://www.cnblogs.com/bethunebtj/p/9168274.html 追源索骥:透过源码看懂Flink核心框架的执行流程 前言 1.从 Hello,World WordC ...

  9. Spark SQL 处理流程分析 (一)

    下面的代码演示了通过Case Class进行表Schema定义的例子: // sc is an existing SparkContext. val sqlContext = new org.apac ...

最新文章

  1. Qt中使用C++的方式
  2. 憋个大招!一起“干完”这份300页1000道面试题
  3. python numpy安装-Python--Numpy安装
  4. python 获得当前运行脚本文件的路径
  5. HPU 第三次积分赛:阶乘之和(水题)
  6. Jmeter之BeanShell
  7. tk-mapper 生成器
  8. linux服务器系统内核参数优化
  9. Vue+Webpack使用规范
  10. python_07 函数作用域、匿名函数
  11. SPSS统计术语与思维【SPSS 002期】
  12. 00001__伊丽莎白福尔摩斯
  13. 移植MotionDriver到RTT
  14. 如何科学进行用户分析?六大方法论了解一下!
  15. 鼠标手势对应操作及常用快捷键-------360浏览器所有!!!!阿冬专栏
  16. webapp封装 苹果app证书
  17. Try to increase the 20000ms adb execution timeout represented by 'uiautomator2ServerInstallTimeout'
  18. java好学么_java是什么好学吗
  19. Ranking 排行
  20. SUP桨板电动气泵方案——鼎盛合方案

热门文章

  1. SpringBoot之AOP面向切面编程
  2. 中医养生专家周敏:人类应当遵循阴阳五行养生自然法则
  3. Goop:滚吧,小怪兽
  4. 计算机桌面交互,基于全息现实技术的桌面交互系统与沉浸式CAVE系统的区别
  5. excel组合汇总_Excel汇总20160229
  6. ElasticSearch 亿级数据检索深度优化
  7. iMeta视频教程 | StrainPanDA分析宏基因组共存菌株的组成和基因成分谱
  8. vue+高德地图实现地图搜索及点击定位
  9. b站黑马Java就业班笔记P101-P200
  10. 长时间戴耳机选哪一种、目前最好用的骨传导耳机品推荐