Hadoop- MR的shuffle过程

 

step1 input

InputFormat读取数据,将数据转换成<key ,value>对,设置FileInputFormat,默认是文本格式(TextInputFormat)

 

step2 map

map<KEYIN, VALUEIN, KEYOUT, VALUEOUT> 默认情况下KEYIN:LongWritable,偏移量。VALUEIN:Text,KEYOUT与VALUEOUT要根据我们的具体的业务来定。

 

step3 shuffle

map输出到reduce之前这个阶段是mr的shuffle阶段。

map输出的<key , value>对首先放在内存中,当达到一定的内存大小,就会溢写(spill)到本地磁盘中,可能有很多文件。spill过程有两个操作,分区(partition)和排序(sort)。当map task结束后可能有很多的小文件,spill。那么我们需要对这些文件合并(merge),排序成一个大文件。此时map阶段才结束。

Reduce task 会到Map Task运行的机器上,拷贝要处理的数据。然后合并(merge),排序,分组(group)将相同key 的value 放在一起,完成了reduce 数据输入的过程。

 

step4 reduce

reduce<KEYIN, VALUEIN, KEYOUT, VALUEOUT>,map输出的<key , value>数据类型与reduce输入<key , value>的数据类型一致。

接下来就是执行Reducer 定义的方法了

 

step5 output

TextOutputFormat

最后将结果输出到文件系统上,每个< key , value >对, key与value中间分隔符为\t,默认调用 key 和 value 的 toString() 方法。

 

我们可以在map端输出文件压缩,可设置,combiner(map端的reduce)。

转载于:https://www.cnblogs.com/RzCong/p/7777463.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值