Spark RDD 宽依赖窄依赖
Spark RDD 宽依赖&窄依赖
- 1.窄依赖
- 2.宽依赖:
- 3.阶段的划分
- 4.宽依赖和窄依赖的作用:
1.窄依赖
每一个父RDD的Partition最多被子RDD的一个Partition使用 (一对一的关系)
常见算子:map flatmap filter union sample 等等
2.宽依赖:
指的是多个子RDD的Partition会依赖同一个父RDD的Partition (一对多的关系)
常见算子:groupByKey reduceByKey sortByKey join 等等
对于窄依赖的 RDD,可以以流水线的方式计算所有父分区,不会造成网络之间的数据混合。对于宽依赖的 RDD,则通常伴随着 Shuffle 操作,即首先需要计算好所有父分区数据,然后在节点之间进行 Shuffle。因此,在进行数据恢复时,窄依赖只需要根据父 RDD 分区重新计算丢失的分区即可,而且可以并行地在不同节点进行重新计算。而对于宽依赖而言,单个节点失效通常意味着重新计算过程会涉及多个父 RDD 分区,开销较大。此外,Spark 还提供了数据检查点和记录日志,用于持久化中间 RDD,从而使得在进行失败恢复时不需要追溯到最开始的阶段。在进行故障恢复时,Spark 会对数据检查点开销和重新计算 RDD 分区的开销进行比较,从而自动选择最优的恢复策略。
3.阶段的划分
Spark 通过分析各个 RDD 的依赖关系生成了 DAG ,再通过分析各个 RDD 中的分区之间的依赖关系来决定如何划分阶段,具体划分方法是:在 DAG 中进行反向解析,遇到宽依赖就断开,遇到窄依赖就把当前的 RDD 加入到当前的阶段中;将窄依赖尽量划分在同一个阶段中,可以实现流水线计算。例如在下图中,首先根据数据的读取、转化和行为等操作生成 DAG。然后在执行行为操作时,反向解析 DAG,由于从 A 到 B 的转换和从 B、F 到 G 的转换都属于宽依赖,则需要从在宽依赖处进行断开,从而划分为三个阶段。把一个 DAG 图划分成多个 “阶段” 以后,每个阶段都代表了一组关联的、相互之间没有 Shuffle 依赖关系的任务组成的任务集合。每个任务集合会被提交给任务调度器(TaskScheduler)进行处理,由任务调度器将任务分发给 Executor 运行。
DAG: 表示整个Spark的执行流程
spark中划分stage通过宽依赖进行的,遇见宽依赖就切分,每个stage内部能多地包含一组具有窄依赖关系的转换,并将它们流水线并行化
4.宽依赖和窄依赖的作用:
1、stage划分
2、容错(针对复杂业务逻辑,当执行到宽依赖的时候,进行适当的cache,担心任务异常结束,数据重跑)
3、代码优化
Spark RDD 宽依赖窄依赖相关推荐
- Spark宽依赖 窄依赖 Job Stage Executor Task 总结
文章授权自: http://www.6aiq.com/article/1547041236424 宽依赖与窄依赖 窄依赖(narrow dependency)和宽依赖(wide dependency, ...
- spark中stage的划分与宽依赖/窄依赖(转载+自己理解/整理)
[1]宽依赖和窄依赖,这是Spark计算引擎划分Stage的根源所在,遇到宽依赖,则划分为多个stage,针对每个Stage,提交一个TaskSet: 上图:一张网上的图: (个人笔记,rdd中有多个 ...
- 宽依赖和窄依赖_spark的宽依赖窄依赖
1RDD的依赖关系及容错 1.1RDD的依赖关系 RDD的依赖关系分为两种:窄依赖(Narrow Dependencies)与宽依赖(Wide Dependencies,源码中称为ShuffleDep ...
- RDD的依赖关系、窄依赖、宽依赖、RDD的缓存、RDD缓存方式、DAG的生成、RDD容错机制之Checkpoint
1.RDD的依赖关系 RDD和它依赖的父RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency). 1.1.窄依赖 窄依赖指的是每一 ...
- Spark RDD 特征及其依赖
1 RDD特征 分区(partition) 有一个数据分片列表,能够将数据进行切分,切分后的数据能够进行并行计算,是数据集的原子组成部分 函数 compute 计算每个分片,得出一个可遍历的结果,用于 ...
- 宽依赖和窄依赖_Spark宽依赖和窄依赖深度剖析
宽依赖和窄依赖深度剖析.png RDD依赖关系与stage划分 Spark中RDD的高效与DAG图有着莫大的关系,在DAG调度中需要对计算过程划分stage,而划分依据就是RDD之间的依赖关系. 1. ...
- Spark—RDD依赖血缘关系
文章目录 Spark-RDD依赖&血缘关系 1.RDD 血缘关系 2.RDD 依赖关系 3.窄依赖 4.宽依赖 5.宽窄依赖示意图 6.RDD 阶段划分 7.RDD 任务划分 Spark-RD ...
- 学习笔记Spark(三)—— Spark架构及原理(spark架构、spark RDD)
一.Spark架构 1.1.基本组件 Cluster Manager 在standalone模式中即为Master主节点,控制整个集群,监控worker.在YARN模式中为资源管理器. Worker ...
- 第二章 Spark RDD以及编程接口
第二章 Spark RDD以及编程接口 目录 Spark程序"Hello World" Spark RDD 创建操作 转换操作 控制操作 行动操作 注:学习<Spark大数据 ...
最新文章
- 一款优秀的JavaScript框架—AngularJS
- [转]php-mobile-detect
- 深度学习已成强弩之末?Bengio等大牛NeurlPS2019上支招
- 检验两组数据是否显著差异_SPSS非参数两个相关样本检验
- 为什么Map桶中个数超过8才转为红黑树
- mysql日期格式化季度_Mysql按周,按月,按日,按小时分组统计数据
- tbc服务器状态,魔兽怀旧服:TBC上线近俩月,玩家心态改变,开始涌入60级服务器...
- 不相交集的求并算法(按集合大小求并+按高度求并)
- 前端学习(3104):react-hello-虚拟dom的两种创建方式
- python去除图像光照不均匀_低光照环境下图像增强相关
- 命令行给php脚本传参,如何在CLI命令行下运行PHP脚本,同时向PHP脚本传递参数?...
- yum 安装oraclejdk_kubernetes-16:制作oraclejdk镜像
- python重命名文件夹下所有文件_Python3.4.3重命名当前文件夹下的文件
- OpenAI 将 k8s 扩展至 7500 个节点以支持机器学习
- ai png转矢量图_Boxy SVG for Mac(矢量图编辑器)
- python3视频教程哪个好_python3入门视频教程
- 必要的先决条件安装失败_先决条件
- 玩转树莓派之ZigBee网关
- 2021 ICPC Gran Premio de Mexico 2da Fecha(C,D,G,I)
- 2021年中国互联网!知识付费行业发展报告!