Spark 原理_物理图_Stage 划分 | 学习笔记

简介: 快速学习 Spark 原理_物理图_Stage 划分

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段Spark 原理_物理图_Stage 划分】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/689/detail/12023


Spark 原理_物理图_Stage 划分


内容简介

一、回顾 task 设计

二、如何划分依据

三、如何划分阶段

 

一、回顾

上节我们学习了 Task 设计的两个想法,这两个想法都比较偏颇,可以分阶段,采用数据流动的模型进行设计,本节主要学习的内容就是阶段怎么划分:阶段+task 就是执行 RDD 的执行者

// task 在遇到 shuffle 时没有办法,必须等前面的所有任务执行完

 

二、如何划分数据?

首先要了解问题,红框位置,reducerdd 中的task 基于前面所有分区的 task 执行,一个分区的数据,依赖于前面所有分区的数据,那么就没有办法处理了

1.为减少执行任务,减少数据暂存和交换的机会,所以需要创建管道,让数据沿着管道流动,其实也就是原先每个 RDD 都有一组 Task,现在改为所有的 RDD 共用一组 task,但也会出现问题,下图红框区域:

image.png

如果要计算 reduceRDD p1 的数据,则要获取 tupleRDD 中所有分区的数据

2.我们可以将其划分为两个阶段,如下图所示

这里在 shuffle 处,必须断开管道,进行数据交换,交换过后,继续流动,所以整个流程可以变为如下

image.png

将其划分为两个阶段,这样 task 就可以计算对应 RDD 中的分区,

将左边所有分区的 p1 都放在一个 task 中执行,将所有的 p2 都放在同一个 task 中执行,将 tuplerdd reducerdd 之间断开,这样就会先执行左边的阶段,执行右边的阶段

task 断开成两个部分,task4 就可以从 task123中获取数据,后 task4 又作为管道,继续让数据在其中流动

3.但是还有一个问题,说断开就直接断开吗?不用打招呼?这个断开即没有道理,也没有规则,所以可以为这个断开增加一个概念叫做阶段,按照阶段断开,阶段的英文叫做 stagestr1rdd 依赖 reducerdd 的分区,reducerdd 依赖于tuplerdd,而它们之间是 shuffle 关系,所以将其断开,继续想左,都是窄依赖,如下:

image.png


三、所以划分阶段的本身就是设置断开的规则,那么该如何划分阶段呢?

1.第一步,从最后一个 RDD,也就是逻辑图中最右边的 RDD 开始,向前滑动 stage 的范围,为 stage0

2.第二步,遇到 shuffledependency 断开 stage ,从下一个 RDD 开始创建新的 stage,为stage1

3.第三步,新的 stage 按照同样的规则继续滑动,指导包裹所有的 RDD

总结来看,就是针对与宽窄依赖来判断,一个 stage 中只有窄依赖,因为只有窄依赖才能形成数据的 pipeline

如果要进行 shuffle 的话,数据是流不过去的,必须要拷贝和拉取,所以遇到 RDD 宽依赖的两个 RDD 时,要切断这两个 RDD stage

阶段怎么划分:阶段+task 就是执行 RDD 的执行者

相关文章
|
6月前
|
移动开发 分布式计算 Spark
Spark的几种去重的原理分析
Spark的几种去重的原理分析
132 0
|
6月前
|
机器学习/深度学习 SQL 分布式计算
Spark核心原理与应用场景解析:面试经验与必备知识点解析
本文深入探讨Spark核心原理(RDD、DAG、内存计算、容错机制)和生态系统(Spark SQL、MLlib、Streaming),并分析其在大规模数据处理、机器学习及实时流处理中的应用。通过代码示例展示DataFrame操作,帮助读者准备面试,同时强调结合个人经验、行业趋势和技术发展以展现全面的技术实力。
565 0
|
6月前
|
存储 分布式计算 数据处理
bigdata-35-Spark工作原理
bigdata-35-Spark工作原理
43 0
|
1月前
|
分布式计算 Java 大数据
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
39 0
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
|
1月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
47 0
|
1月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
81 0
|
5月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
42 0
|
6月前
|
SQL 存储 分布式计算
spark执行sql的原理是什么
spark执行sql的原理是什么
126 1
|
6月前
|
分布式计算 算法 数据挖掘
Spark中的图计算库GraphX是什么?请解释其作用和常用操作。
Spark中的图计算库GraphX是什么?请解释其作用和常用操作。
90 1
|
6月前
|
SQL 分布式计算 HIVE
[已解决]Job failed with org.apache.spark.SparkException: Job aborted due to stage failure: Task 3 in st
[已解决]Job failed with org.apache.spark.SparkException: Job aborted due to stage failure: Task 3 in st
315 0
下一篇
无影云桌面