通过编程方式详解MapReduce之Shuffle 三个阶段

本文详细介绍了MapReduce中Shuffle的三个阶段:map端的Combine、Partition以及reduce端的Combine。Combiner作为局部reducer减少数据量,Partitioner决定数据流向哪个Reduce Task。通过实例分析了Combiner和Partitioner的使用,并讨论了它们在大数据处理中的作用。
摘要由CSDN通过智能技术生成

MapReduce之Shuffle 三个阶段详解

1、 shuffle的基本概念 

MapReduce确保每个reducer的输入都按key进行排序,系统执行排序的过程——将map输出作为输入传给reducer——称之为shuffle。可以将其理解为从map产生输出到reduce的消化输入的整个过程。


2、Shuffle 三个阶段分别

shuffle就是combine,partition,combine的组合
第一个是 map端的combine,是在map本地把同key的放在一起成列表 (Combiner 阶段)
第二个是 partition分割,把键值对按照key对应分配到reduce  (Copy phase )
第三个是 reduce端的combine,把同key的再合并得到最后的reduce输入( Sort phase 应该为合并阶段 merge,因为排序是在map进行的)


shuffle阶段运行图:


说明:

1)Combiner 可做看local reducer
合并相同的key 对应的value (wordcount 例子)
通常与Reducer 逻辑一样
好处
减少Map Task 输出数据量(磁盘IO )
减少Reduce-Map 网络传输数据量( 网络IO)
如何正确使用
结果可叠加
Sum(YES!) ,Average (NO!)


2) Partitioner 决定了Map Task 输出的每条数据
交给哪个Reduce Task 处理
默认实现:hash(key) mod R (对应hashCode取模)
R 是Reduce Task 数目
允许用户自定义
很多情况需自定义Partitioner继承HashPartitioner类即可


3、 关于Combiner 与 Partitioner的实例:

首先准备测试数据:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值