你的位置:首页 > 数据库

[数据库]六、MapReduce Shuffle 过程


Shuffle描述数据从map task输出到reduce输入的这段过程

1、map端shuffle功能

1)分区:决定将map task 交给哪个reduce程序处理;

2)排序:对分区中的数据做排序处理

3)spill写入磁盘:将内存中数据写入磁盘

4)merge合并:将小文件合并成大文件

说明:设置reduce task的个数在run()方法中使用代码:

job.setNumReduceTasks(3)

2、reduce端shuffle功能

1)从map数据中拷贝属于自己分区的数据

2)对分区数据进行合并

3)分组:将形同key的value值组合在一起

3、MapReduce中间数据压缩配置

1)方式一:全局生效

在mapred-site中新增属性

属性:mapreduce.map.output.compress

值:ture

2)方式二:本次生效

在代码中添加:

configuration.set("mapreduce.map.output.compress","true");