Map Reduce 和 shuffle过程 浅述

本文介绍了MapReduce的shuffle过程,包括map端的spill(溢写)和merge过程,以及reduce端的copy和sort。在map阶段,数据经过map()处理后存储在环形缓冲区,达到阈值后通过spill线程进行排序和溢写到磁盘。多个溢写文件通过merge合并。reduce阶段,数据从不同节点获取并进行merge,确保全局有序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Map Reduce 和 shuffle过程 浅述

概念明确:

笼统的说就是两个过程:map和reduce。map 负责数据的过滤分发,reduce负责数据的计算归并;

在map和reduce中间有个被叫做“神奇发生的地方”就是shuffle过程,其实数据的大量的处理任务都有shuffle完成,
首先要明确的是:shuffle不是一个单独的过程,它横跨map和reduce端
shuffle包括map端的spill(溢写)过程,reduce端的copy(提取map输出数据)和sort(分组合并)过程。
map任务:
单独的map()职责很明确,就是将输入的k—v对做个转换,输出依旧是k-v,只是形式已经发生变化;
就拿经典入门例子wordcount(单词统计)来说,在map()之前,文件的读入有个方法inputformat,
他就已经将文件按需求(可自定义)进行切割,并按k-v的形式输出(此时的k是数据的偏移量,v是具体的数据)
这里写图片描述
这就明确了map读入的数据就已经是k-v(偏移量-具体数据),读入之后就要用map()方法进行处理,
结果还是k-v形式,此时的k是是实体数据,v是词频标记统计,如果不自行定义的话,其值就是1。
这里写图片描述
这样map阶段的map()已经结束了,然后就进入了shuffle过程(依旧还在map端)!

map将map()后的k-v不断的输出到内存中,此时内存中构造了一个环形数据结构(简单的理解,环形是为了更有效的使用内存),
环形数据结构的优点就是可以一边写入,一边读出。默认大小是100M,但不是说当存满100M就才开始读出,或者可以随时读出
它设定一个阈值:80M 就是当写入的数据达到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值