MapReduce 工作流程 及 Shuffle 机制

MapReduce的工作流程包括Map、Shuffle和Reduce阶段。Shuffle阶段涉及Partition、排序和Combiner。Partition默认根据key的hashCode分区,可自定义分区策略。MapTask的输出先缓存后溢出到磁盘,进行排序。ReduceTask根据分区号获取数据,再次进行排序和合并。Combiner是Mapper和Reducer间的组件,用于减少数据传输,提高效率。
摘要由CSDN通过智能技术生成

MapReduce 工作流程

在这里插入图片描述
在这里插入图片描述

Shuffle 机制

Map 方法之后,Reduce 方法之前的数据处理过程称之为 Shuffle,具体 Shuffle 过程详解,如下:
(1) MapTask 收集我们的 map()方法输出的 kv 对,放到内存缓冲区中
(2)从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件
(3) 多个溢出文件会被合并成大的溢出文件
(4) 在溢出过程及合并的过程中,都要调用 Partitioner 进行分区和针对 key 进行排序(按key索引进行字典顺序快排)
(5) ReduceTask 根据自己的分区号,去各个 MapTask 机器上取相应的结果分区数据
(6) ReduceTask 会抓取到同一个分区的来自不同 MapTask 的结果文件,ReduceTask 会将这些文件再进行合并(归并排序)
(7) 合并成大文件后,Shuffle 的过程也就结束了,后面进入 ReduceTask 的逻辑运算过程(从文件中取出一个一个的键值对 Group,调用用户自定义的 reduce()方法)
注意
(1) Shuffle 中的缓冲区大小会影响到 MapReduce 程序的执行效率,原则上说,缓冲区越大,磁盘 io 的次数越少,执行速度就越快
(2) 缓冲区的大小可以通过参数调整,参数:mapreduce.task.io.sort.mb 默认 100M
在这里插入图片描述

1. Partition 分区

  1. 默认 Partition 分区
public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值