第25课 Spark Hash Shuffle源码解读与剖析

本文深入解析Spark 1.5.2版本中Hash Shuffle的源码,包括ShuffleWriter如何将数据写入本地磁盘,以及与Driver的通信过程。着重介绍了ShuffleMapTask、HashShuffleWriter、ShuffleManager的角色和工作原理,并探讨了本地聚合操作如何减少磁盘I/O和网络传输。此外,还提到了配置和优化建议,如调整Shuffle内存大小。

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

第25课: Spark Hash Shuffle源码解读与剖析

Spark 2.1x 现在的版本已经没有Hash Shuffle的方式,那为什么我们还要讲解HashShuffle源码的内容呢?原因有3点:1,在现在的实际生产环境下,很多人在用Spark1.5.x,实际在使用Hash Shuffle的方式。2,Hash Shuffle的方式是后续Sort Shuffle的基础。3,在实际生产环境下,如果不需要排序,数据规模不是那么大,HashShuffle的方式是性能比较好的一种方式,SparkShuffle是可以插拔的,我们可以进行配置。

         本节我们基于 Spark 1.5.2版本讲解Hash Shuffle;Spark 1.6.3是Spark 1.6.0中的一个版本,如果在生产环境中使用Spark 1.x,最终都会转向Spark 1.6.3,Spark 1.6.3是1.x版本中最后一个版本,也是最稳定最强大的一个版本;Spark 2.1.0是Spark最新版本。可以在生产环境中实验。

 Shuffle 的过程是Mapper和Reducer以及网络传输构成的,Mapper端会把自己的数据写入本地磁盘,Reducer 端会通过网络把数据抓取过来。Mapper 会先把数据缓存在内存中,在默应情况下缓存空间是 32K,数据从内存到本地磁盘的一个过程就是写数据的一个过程。

这里有两Stage,上一个Stage 叫ShuffleMapTask,下面的一个Stage 可能是ShuffleMapTask,也有可能是 ResultsTask,取决于它这个任务是不是最后一个Stage所产生的。ShuffleMa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大模型与Agent智能体

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值