MapReduce之Reduce详解

    

Reduce 大致分为 copy、sort、reduce 三个阶段,重点在前两个阶段。copy 阶段包含一 个 eventFetcher 来获取已完成的 map 列表,由 Fetcher 线程去 copy 数据,在此过程中 会启动两个 merge 线程,分别为 inMemoryMerger 和 onDiskMerger,分别将内存中的 数据 merge 到磁盘和将磁盘中的数据进行 merge。待数据 copy 完成之后,copy 阶段就 完成了,开始进行 sort 阶段,sort 阶段主要是执行 finalMerge 操作,纯粹的 sort 阶段, 完成之后就是 reduce 阶段,调用用户定义的 reduce 函数进行处理
详细步骤
1. Copy阶段 ,简单地拉取数据。Reduce进程启动一些数据copy线程(Fetcher),通过 HTTP方式请求maptask获取属于自己的文件。

2. Merge阶段 。这里的merge如map端的merge动作,只是数组中存放的是不同map端 copy来的数值。Copy过来的数据会先放入内存缓冲区中,这里的缓冲区大小要比map 端的更为灵活。merge有三种形式:内存到内存;内存到磁盘;磁盘到磁盘。默认情 况下第一种形式不启用。当内存中的数据量到达一定阈值,就启动内存到磁盘的 merge。与map 端类似,这也是溢写的过程,这个过程中如果你设置有Combiner, 也是会启用的,然后在磁盘中生成了众多的溢写文件。第二种merge方式一直在运 行,直到没有map端的数据时才结束,然后启动第三种磁盘到磁盘的merge方式生成 最终的文件。

3. 合并排序 。把分散的数据合并成一个大的数据后,还会再对合并后的数据排序。

4. 对排序后的键值对调用reduce方法 ,键相等的键值对调用一次reduce方法,每次调用会 产生零个或者多个键值对,最后把这些输出的键值对写入到HDFS文件中

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值