MR shuffle流程详解

map方法之后,reduce方法之前的这段数据处理过程,叫做shuffle。
在这里插入图片描述

shuffle过程

  • Map端通过先把数据写出getPartiton()方法,然后带着分区编号发送到环形缓冲区中。
  • 环形缓冲区默认100M,数据达到80%时,溢写数据并反向写入索引和数据。此处可以进行一些优化,一般我们调整环形缓冲区的大小为200M,数据达到90%-95%时溢写,减少溢写次数。
  • 数据溢写之前进行分区和快速排序。对key的索引按照字典顺序排序。
  • 在归并前,可以根据业务选择,是否要对分区排序后的数据进行combiner合并数据。一般来说,不影响业务的情况下(求和操作,求平均值操作不可使用),我们使用combiner合并。
  • merge归并分区排序后的数据。
  • 归并后的数据还可以再进行combiner合并,然后压缩,存储到磁盘。
  • Reduce端先将相同分区的数据加载到缓存中,如果缓存足够,直接merge归并数据;如果缓存不够,先将数据溢写到磁盘,再进行merge归并。
  • 归并后的数据默认按照key进行分组,也可以自定义分组比较器自定义分组。
  • 分组后的数据进入reduce方法中进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值