如果Stage能够复用前面的Stage的话,那么会显示灰色 。

文章插图
9.Shuffle在 Spark 中 , Shuffle 是指在不同阶段之间重新分配数据的过程 。它通常发生在需要对数据进行聚合或分组操作的时候,例如 reduceByKey 或 groupByKey 等操作 。
在 Shuffle 过程中,Spark 会将数据按照键值进行分区 , 并将属于同一分区的数据发送到同一个计算节点上 。这样,每个计算节点就可以独立地处理属于它自己分区的数据 。
10.Stage的划分Stage的划分,简单来说是以宽依赖来划分的 。
对于窄依赖 , Partition 的转换处理在 Stage 中完成计算,不划分(将窄依赖尽量放在在同一个 Stage 中,可以实现流水线计算) 。
对于宽依赖 , 由于有 Shuffle 的存在,只能在父 RDD 处理完成后,才能开始接下来的计算,也就是说需要划分 Stage 。
Spark 会根据 Shuffle/宽依赖 使用回溯算法来对 DAG 进行 Stage 划分,从后往前,遇到宽依赖就断开,遇到窄依赖就把当前的 RDD 加入到当前的 Stage 阶段中 。
至于什么是窄依赖和宽依赖 , 下文马上就会提及 。
11.窄依赖 & 宽依赖(1) 窄依赖
父 RDD 的一个分区只会被子 RDD 的一个分区依赖 。比如:map , filter和union,这种依赖称之为「窄依赖」 。

文章插图
窄依赖的多个分区可以并行计算,并且窄依赖的一个分区的数据如果丢失只需要重新计算对应的分区的数据就可以了 。
(2) 宽依赖
指子RDD的分区依赖于父RDD的所有分区,称之为「宽依赖」 。

文章插图
对于宽依赖 , 必须等到上一阶段计算完成才能计算下一阶段 。
12.DAG有向无环图,其实说白了就是RDD之间的依赖关系图 。
- 开始:通过 SparkContext 创建的 RDD 。
- 结束:触发 Action,一旦触发 Action 就形成了一个完整的 DAG(有几个 Action , 就有几个 DAG) 。
- 构建Spark Application的运行环境(启动SparkContext),SparkContext向资源管理器(可以是Standalone、Mesos或YARN)注册并申请运行Executor资源 。
- 资源管理器为Executor分配资源并启动Executor进程,Executor运行情况将随着“心跳”发送到资源管理器上 。
- SparkContext构建DAG图,将DAG图分解成多个Stage , 并把每个Stage的TaskSet(任务集)发送给Task Scheduler (任务调度器) 。
- Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor,同时,SparkContext将应用程序代码发放给Executor 。
- Task在Executor上运行,把执行结果反馈给Task Scheduler,然后再反馈给DAG Scheduler 。
- 当一个阶段完成后,Spark 会根据数据依赖关系将结果传输给下一个阶段,并开始执行下一个阶段的任务 。
- 最后 , 当所有阶段都完成后,Spark 会将最终结果返回给驱动程序,并完成作业的执行 。
- 本地模式:在本地模式下,Spark 应用程序会在单个机器上运行 , 不需要连接到集群 。这种模式适用于开发和测试,但不适用于生产环境 。
- 独立模式:在独立模式下,Spark 应用程序会连接到一个独立的 Spark 集群,并在集群中运行 。这种模式适用于小型集群,但不支持动态资源分配 。
- Mesos 模式:在 Mesos 模式下,Spark 应用程序会连接到一个 Apache Mesos 集群,并在集群中运行 。这种模式支持动态资源分配和细粒度资源共享,目前国内使用较少 。
- YARN 模式:在 YARN 模式下 , Spark 应用程序会连接到一个 Apache Hadoop YARN 集群,并在集群中运行 。这种模式支持动态资源分配和与其他 Hadoop 生态系统组件的集成,Spark在Yarn模式下是不需要Master和Worker的 。
推荐阅读
- 烤箱新手教程 烤箱入门窍门
- 指南针的作用和意义 指南针的作用意义是什么
- 精致女生减肥指南,20个习惯,做到一半,就能再瘦70年
- 微波炉怎么选购指南视频 微波炉怎么选购指南
- 指南针怎么看 指南针怎么看海拔
- 抖音产业带服务商入驻详细指南!
- 春节社交礼仪 春节社交礼仪指南
- 中国早期的指南针也被称为什么?A 中国早期的指南针也被称为什么
- Tomcat目录结构详解:从新手到专家的指南
- “十一”长假哪天最堵?这份“避堵”指南请收好
