Shuffle阶段的自我理解

Shuffle阶段是MapReduce的重要环节,它连接Map和Reduce任务。Map端将数据按分区写入内存缓冲区,达到一定比例时溢写到磁盘,最后进行排序和合并。Reduce端则监听Map任务完成,拉取数据并合并成输入文件。优化Shuffle可提高性能,如调整内存使用、使用Combiner减少中间文件,以及选择合适的排序算法。
摘要由CSDN通过智能技术生成
Shuffle阶段的概述

Shuffle是连接map,reduce两个管道的衔接套。Map的输出经过partition写到内存的buffer里面,当内存满了的时候,会排序写到零时文件,这样当mapTask整个运行完之后,会产生一大堆零时文件,shuffle要把它们merge在一起。(会调用combine函数)
Reduce端通过TaskTracker监听到自己的需要数据的哪个map运行完了,就回去pull数据,先copy到本地,然后把从不同Node搞来的数据merge成一个大文件。作为Reduce job的输入。

Map端详述

1,主要代码阅读参考MapTask类。
2,主要的参数
- spillper,设置buffer使用率达到多少时,开始写零时文件,默认是0.8
- sortmb:内存buf的大小,默认是100MB
- indexCacheMemoryLimit:内存index的大小,默认是1024*1024
- sorter:对mapper输出的key进行排序,默认是quick sort
3,主要流程
- 对 Map的输出键值对计算partition,写入buffer(MapOutputBuffer类)。
- buffer内存使用率达到spillper值时,会冻结这部分并写到零时文件中。
- merge阶段,多路归并算法把零时有序文件合并成一个整体有序文件。

Reduce端详述

1,主要代码阅读参考MergeManagerImpl类
2&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值