什么是Spark?

Spark是处理大数据常用的计算引擎。Spark是一个用来实现快速而通用的集群计算的平台。扩展了广泛使用的MapReduce计算模型,而且高效地支持更多的计算模式,包括交互式查询和流处理。和MapReduce相比,spark支持内存计算,一般比MapReduce更高效。

一般我们在提交spark任务的时候,都会去其UI界面查看任务运行状况。其中就有job、stage、task的一些执行进度展示。今天,就详细说明一下这些名词术语的含义。

Job

spark中的数据都是抽象为RDD的,它支持两种类型的算子操作:Transformation和Action。Transformation算子的代码不会真正被执行。只有当我们的程序里面遇到一个action算子的时候,代码才会真正的被执行。

Transformation算子主要包括:map、mapPartitions、flatMap、filter、union、groupByKey、repartition、cache等。

Action算子主要包括:reduce、collect、show、count、foreach、saveAsTextFile等。

当在程序中遇到一个action算子的时候,就会提交一个job,执行前面的一系列操作。因此平时要注意,如果声明了数据需要cache或者persist,但在action操作前释放掉的话,该数据实际上并没有被缓存。

通常一个任务会有多个job,job之间是按照串行的方式执行的。一个job执行完成后,才会起下一个job。有一段时间曾想让job并行执行,但没有找到解决方法。

Stage

一个job通常包含一个或多个stage。各个stage之间按照顺序执行。上面已经说过,一个job会有多个算子操作。这些算子都是将一个父RDD转换成子RDD。这个过程中,会有两种情况:父RDD中的数据是否进入不同的子RDD。如果一个父RDD的数据只进入到一个子RDD,比如map、union等操作,称之为narrow dependency(窄依赖)。否则,就会形成wide dependency( 宽依赖),一般也成为shuffle依赖,比如groupByKey等操作。

job中stage的划分就是根据shuffle依赖进行的。shuffle依赖是两个stage的分界点。shuffle操作一般都是任务中最耗时耗资源的部分。因为数据可能存放在HDFS不同的节点上,下一个stage的执行首先要去拉取上一个stage的数据(shuffle read操作),保存在自己的节点上,就会增加网络通信和IO。Shuffle操作其实是一个比较复杂的过程,这里暂且不表。

Task

一个spark application提交后,陆续被分解为job、stage,到这里其实还是一个比较粗的概念。Stage继续往下分解,就是Task。Task应该是spark最细的执行单元了。Task的数量其实就是stage的并行度。

RDD在计算的时候,每个分区都会起一个task,所以rdd的分区数目决定了总的的task数目。每个Task执行的结果就是生成了目标RDD的一个partiton。在Map阶段partition数目保持不变。在Reduce阶段,RDD的聚合会触发shuffle操作,聚合后的RDD的partition数目跟具体操作有关,例如repartition操作会聚合成指定分区数。coalesce算子同样可以改变partition的数目,不过只能减少不能增加。repartition和coalesce算子的区别在于前者会引发shuffle,后者则不会。

到这里,基本上介绍完了job、stage、task的一些特性。

理解spark中的job、stage、task相关推荐

  1. Spark 中 File,Block,Split,Task,Partition,RDD概念的理解

    1,在 HDFS 中会以 Block 为单位进行存储很多的 File,也就是说每个 File 可能会被拆分成多个 Block 存储在 HDFS 上: 2,当 Spark 读取 HDFS 上的文件作为输 ...

  2. 数组 spark_结合实例理解Spark中的cache()

    cache()在Spark上的应用 前言:在上MSBD5003的时候,刚接触spark对laziness的特性已经cache()(persist())方法的理解不是很透彻.这里复现了一个问题并提供了两 ...

  3. 理解Spark中RDD(Resilient Distributed Dataset)

    文章目录 1 RDD 基础 1.1 分区 1.2 不可变 1.3 并行执行 2 RDD 结构 2.1 SparkContext.SparkConf 2.2 Partitioner 2.3 Depend ...

  4. spark job stage task概念与区分

    基本概念 Job简单讲就是提交给spark的任务. Stage是每一个job处理过程要分为的几个阶段. Task是每一个job处理过程要分几为几次任务. Task是任务运行的最小单位.最终是要以tas ...

  5. spark中stage的划分与宽依赖/窄依赖(转载+自己理解/整理)

    [1]宽依赖和窄依赖,这是Spark计算引擎划分Stage的根源所在,遇到宽依赖,则划分为多个stage,针对每个Stage,提交一个TaskSet: 上图:一张网上的图: (个人笔记,rdd中有多个 ...

  6. Spark中Task,Partition,RDD、节点数、Executor数、core数目(线程池)、mem数

    Spark中Task,Partition,RDD.节点数.Executor数.core数目的关系和Application,Driver,Job,Task,Stage理解 from:https://bl ...

  7. spark中local模式与cluster模式使用场景_Spark 知识点 ( 架构 RDD Task )

    1. Spark介绍 Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一 ...

  8. Spark中Task数量的分析

    本文主要说一下Spark中Task相关概念.RDD计算时Task的数量.Spark Streaming计算时Task的数量. Task作为Spark作业执行的最小单位,Task的数量及运行快慢间接决定 ...

  9. 深入理解spark两种调度模式:FIFO,FAIR模式

    深入理解spark-两种调度模式FIFO,FAIR模式 前面我们应知道了一个任务提交会由DAG拆分为job,stage,task,最后提交给TaskScheduler,在提交taskscheduler ...

最新文章

  1. 悟道:一位IT高管20年的职场心经
  2. Docker使用阿里云docker镜像加速
  3. C#与U3D中字符串尾0
  4. rgb sw 线主板接口在哪_十代至尊i910980XE直接上:技嘉X299X AORUS MASTER主板评测
  5. asp:HyperLink中 Eval要用string.Format绑定
  6. microsoft project 出现不能保存为xls文件时可以按照如下方法解决
  7. 数据切分——Atlas介绍
  8. 实现简单的shell sed替换功能
  9. 吃鸡服务器8月10日维护,《黑潮之上》2021年8月10日不停服维护公告
  10. 衡量人体健康的“十大新标杆”
  11. js designMode contentEditable 编辑在线网页
  12. 检查某个网段存活的主机_shell脚本
  13. 源码解析:init-method、@PostConstruct、afterPropertiesSet孰先孰后
  14. QTP11.0安装步骤及需要注意事项
  15. 服务器ajax无响应时间,ajax 服务器响应时间
  16. html 网页地图集制作ECHARTS,pyecharts绘制地图(示例代码)
  17. ps去水印教程_Ps去水印教程:简单三步教新手学习去狮子图像上的水印,多余的文...
  18. 2017283421俞烨炜
  19. 如何写毕业论文(个人心得,不是保姆级)
  20. ESP32设备驱动-SHT30温度湿度传感器驱动

热门文章

  1. 51nod 1022 石子合并v2
  2. (视频+图文)机器学习入门系列-第11章 支持向量机
  3. 【NLP】用BERT进行机器阅读理解
  4. 【职场】什么才是程序员摸鱼的最高境界?
  5. 【机器学习基础】你应该知道的LightGBM各种操作!
  6. 【Python基础】Python 流程控制专题总结
  7. 目标检测领域还有什么可做的?19 个方向给你建议
  8. CSS3 border-radius妙用
  9. 数据库集群 MySQL主从复制
  10. java stop graceful