MapReduce的Shuffle过程

认识Shuffle

map task:map端可以执行的一个进程

reduce task:reduce端可以执行的一个进程

shuffle是介于maptask和reducetask之间的一个过程

shuffle可以分为map端的shuffle和reduce端的shuffle

mapreduce中,map阶段处理的数据如何传递给reduce阶段,是mapreduce框架中最关键的一个流程,这个流程就叫shuffle

具体来说:就是将map task输出的处理结果数据,分发给reduce task,并在分发的过程中,对数据按key进行了分区和排序。

Shuffle执行过程

在这里插入图片描述

shuffle是MR处理流程中的一个过程,它的每一个处理步骤是分散在各个map task和reduce task节点上完成的。

Map端shuffle

  1. 每个map读取原数据的一部分(inputSplit),执行Mapper操作。
  2. 从Mapper端输出的键值对数据进入到环形缓冲区(100M)
  3. 环形缓冲区容量达到80%产生溢写,写入到磁盘缓冲区。
  4. 在磁盘缓冲区中分区(partitioner), 排序(sort),合并(combiner)

Reduce端shuffle

  1. 由reducetask向maptask拉取数据,进行分组排序(归并算法)
  2. 把数据组合成(key,序列)发送到Reducer类中执行
  3. 在Reducer类中处理数据,把结果写到文件中
    在这里插入图片描述

Partitioner分区机制

根据不同的业务逻辑需求进行不同的数据分区。

分区的数量与reduce数量的关系:分区数量 <= reduce的数量

  1. 分区数量 = reduce数量

    每个reduce找自己相应分区就ok,最理想的状态

    <
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值