Spark RDD的Shuffle

Shuffle的概念来自Hadoop的MapReduce计算过程。当对一个RDD的某个分区进行操作而无法精确知道依赖前一个RDD的哪个分区时,依赖关系变成了依赖前一个RDD的所有分区。比如,几乎所有<key, value>类型的RDD操作,都涉及按key对RDD成员进行重组,将具有相同key但分布在不同节点上的成员聚合到一个节点上,以便对它们的value进行操作。这个重组的过程就是Shuffle操作。因为Shuffle操作会涉及数据的传输,所以成本特别高,而且过程复杂。

下面以reduceByKey为例来介绍。在进行reduce操作之前,单词“Spark”可能分布在不同的机器节点上,此时需要先把它们汇聚到一个节点上,这个汇聚的过程就是Shuffle,下图所示。

 Shuffle操作

Shuffle是一个非常消耗资源的操作,除了会涉及大量网络IO操作并使用大量内存外,还会在磁盘上生成大量临时文件,以避免R错误恢复时重新计算。因为Shuffle操作的结果其实是一次调度的Stage的结果,而一次Stage包含许多Task,缓存下来还是很划算的。Shuffle使用的本地磁盘目录由spark.local.dir属性项指定。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据学习笔记

Spark2.x学习笔记:12、Shuffle机制

12、Shuffle机制 12.1 背景 在MapReduce计算框架中,shuffle是连接Map和Reduce之间的桥梁。 Map的输出要用到Reduce中...

34170
来自专栏Spark学习技巧

视频:RDD的特性介绍及源码阅读必备基础

1 - A list of partitions 2 - A function for computing each split 3 - A list o...

13150
来自专栏性能与架构

【教程】Apache Storm 快速起步

简介 本教程介绍了 Apache Storm 的基本原理和开发方法,包括一个PDF和2个示例的源码 内容大纲 Storm 是什么 应用场景 Storm与Hado...

33130
来自专栏Albert陈凯

Spark概要掌握情况自我核查

1、Spark目前只持哪哪种语言的API? Java, Scala, Python, R. Ref: http://spark.apache.org/ 2、R...

27230
来自专栏Albert陈凯

3.5RDD的容错机制

3.5 RDD的容错机制 RDD实现了基于Lineage的容错机制。RDD的转换关系,构成了compute chain,可以把这个compute chain认...

29680
来自专栏Albert陈凯

3.0Spark RDD实现详解

Spark技术内幕:深入解析Spark内核架构设计与实现原理 第三章 Spark RDD实现详解 RDD是Spark最基本也是最根本的数据抽象,它具备像MapR...

34770
来自专栏about云

spark入门基础知识常见问答整理

一. Spark基础知识 1.Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduce的通用的并行计算框架 dfsSpa...

378100
来自专栏LhWorld哥陪你聊算法

【Spark篇】---Spark初始

Spark是基于内存的计算框架,性能要优于Mapreduce,可以实现hadoop生态圈中的多个组件,是一个非常优秀的大数据框架,是Apache的顶级项目。On...

16530
来自专栏王小雷

Spark学习之基础相关组件(1)

Spark学习之基础相关组件(1) 1. Spark是一个用来实现快速而通用的集群计算的平台。 2. Spark的一个主要特点是能够在内存中进行计算,因而更快。...

21880
来自专栏涂小刚的专栏

【Spark教程】核心概念RDD

RDD全称叫做弹性分布式数据集(Resilient Distributed Datasets),它是一种分布式的内存抽象,表示一个只读的记录分区的集合,它只能通...

2.1K00

扫码关注云+社区

领取腾讯云代金券