MapReduce基础之:MapReduce过程中的排序

mapreduce为什么要排序

是为了通过外排(外部排序)降低内存的使用量:因为reduce阶段需要分组,将key相同的放在一起进行规约,使用了两种算法:hashmap和sort,如果在reduce阶段sort排序(内部排序),太消耗内存,而map阶段的输出是要溢写到磁盘的,在磁盘中外排可以对任意数据量分组(只要磁盘够大),所以,map端排序(shuffle阶段),是为了减轻reduce端排序的压力。

mapreduce发成了几次排序?都在什么时候?

	第一次:kvbuffer溢写之前会先对内存中的文件根据key和partition进行排序。方式:快排
	第二次:所有文件都经过map方法和kvbuffer后,所有的小文件会合并成file.out文件,合并过程中会进行第二次排序,用来保证该文件有序。整个文件会根据partition分成多个块,每个块内按照key值排序。方式:归并(归并排序的方式很适合做多文件合并排序,且归并排序是具有稳定性的排序方式)。
	第三次:reduce拉取到的文件会进行合并,此时会再次进行排序。方式:归并。
	第四次:最后阶段:使用了堆排作最后的合并过程。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嗷嗷的特Man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值