我为什么要区分MR和Spark的shuffle

本文详细解析了MapReduce的Shuffle阶段的工作原理,包括数据的缓冲、排序、溢写到磁盘以及最终合并的过程,同时阐述了Reducer如何通过HTTP连接从Mapper获取最终结果,并在合并数据时再次进行排序,最后进行reduce操作。

    MR的shuffle阶段,用一张图就可以说明了:

    map阶段的输出结果会放在缓冲区中,另有一个较小的缓冲区维护了这个缓冲区中键值对+分区号的索引。当该缓冲区快满时,会对其索引进行排序,然后spill到磁盘上。当所有数据都spill到磁盘上后,会对这些碎片文件进行合并,这个过程中同样会发生排序和归并,以便减小传输到reducer上的数据量。reducer通过http连接从mapper上拉去最终的结果,注意是按照分区拉去所需的部分。对于一个reducer由于数据可能来自多个上游,所以仍然要继续排一次序,最后进行reduce操作。

    Spark的shuffle日后再写。

转载于:https://www.cnblogs.com/qupeng/p/5151580.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值