MapReduce中排序发生在哪几个阶段?

MapReduce作业由Map和Reduce阶段组成,期间自动进行数据排序。Map阶段使用快速排序,即使无Combiner,数据也会被排序。Reduce阶段接收到的数据会再次排序,便于按key分组处理。在hadoop1.x中排序不可关闭,但在hadoop2.x可通过设置reducetask为0来关闭。

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

一个MapReduce作业由Map阶段和Reduce阶段两部分组成,这两阶段会对数据排序,从这个意义上说,MapReduce框架本质就是一个Distributed Sort。
在Map阶段,Map Task会在本地磁盘输出一个按照key排序(采用的是快速排序)的文件(中间可能产生多个文件,但最终会合并成一个),在Reduce阶段,每个ReduceTask会对收到的数据排序,这样数据便按照key分成了若干组,之后以组为单位交给reduce方法处理。
很多人的误解在Map阶段,如果不使用Combiner便不会排序,这是错误的,不管你用不用Combiner,MapTask均会对产生的数据排序(如果没有ReduceTask,则不会排序,实际上Map阶段的排序就是为了减轻Reduce端排序负载)。
由于这些排序是MapReduce自动完成的,用户无法控制,因此,在hadoop1.x中无法避免,也不可以关闭,但hadoop2.x是可以关闭的(将reducetask设置为0)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值