【Spark】Shuffle详解

本文深入探讨了Spark Shuffle的各个方面,包括Shuffle调优概述、发展演进,详细讲解了Hash Shuffle、Sort Shuffle及其优化,以及Writer的运行模式,强调了Shuffle在性能优化中的重要性和策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概要

1、Shuffle调优概述

Spark作业性能主要消耗在Shuffle环境,因为其中包含大量磁盘IO、序列化、网络数据传输等操作,如果想提升作业性能,有必要对Shuffle过程进行调优。但也要注意,影响Spark作业性能因素主要还是代码开发、资源参数以及数据倾斜,Shuffle调优只占一小部分,不要舍本逐末。

2、Shuffle发生阶段

1

3、触发 Shuffle 操作的算子
分类 操作
Repartition相关 repartition、coalesce、repartitionAndSortWithinPartitions
*ByKey操作(除了countByKey) groupByKey,reduceByKey,combineByKey、aggregateByKey、sortBeyKey
Join相关 cogroup,join

二、发展演进

Spark版本 Shuffle演进
<=0.8 Hash Based Shuffle
0.8.1 为 Hash Based Shuffle引入File Consolidation机制
0.9 引入 ExternalAppendOnlyMap
1.1 引入 Sort Based Shuffle,但默认仍为 Hash Based Shuffle
1.2 默认的 Shuffle 方式改为 Sort Based Shuffle
1.4 引入 Tungsten-Sort Based Shuffle
1.6 Tungsten-Sort Based Shuffle 并入 Sort Based Shuffle
2.0 Hash Based Shuffle 退出历史舞台
0、MapReduce中Shuffle

1

注:后续Spark Shuffle都以MapReduce Shuffle为参考,下面的Map Task就是指Shuffle Write阶段,Reduce Task指Shuffle Read阶段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值