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 的执行者

相关文章
|
移动开发 分布式计算 Spark
Spark的几种去重的原理分析
Spark的几种去重的原理分析
690 0
|
机器学习/深度学习 SQL 分布式计算
Spark核心原理与应用场景解析:面试经验与必备知识点解析
本文深入探讨Spark核心原理(RDD、DAG、内存计算、容错机制)和生态系统(Spark SQL、MLlib、Streaming),并分析其在大规模数据处理、机器学习及实时流处理中的应用。通过代码示例展示DataFrame操作,帮助读者准备面试,同时强调结合个人经验、行业趋势和技术发展以展现全面的技术实力。
1749 0
|
分布式计算 Java 大数据
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
322 0
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
771 0
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
367 0
|
SQL 存储 分布式计算
spark执行sql的原理是什么
spark执行sql的原理是什么
587 1
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
316 0
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
732 0
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
1297 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
821 79