九、用图讲解MapReduce Shuffle 过程

 
Map Shuffle 主要做了哪些事?哪些可以设置及如何设置?
环形内存缓冲区默认为100MB,当超过80%,则进行spill到磁盘。内存中会进行分区、排序、combine(可选)。磁盘中将多个溢写的文件进行合并,压缩(可选)。
设置:
1) partitioner分区       
job.setPartitionerClass(cls);
 2) sort排序
job.setSortComparatorClass(cls);
 3) combine本地合并   
job.setCombinerClass(cls);
     4) compress压缩
Reduce Shuffle 主要做了哪些事?哪些可以设置及如何设置?
主要进行复制、合并、排序和分组。
分组设置:
job.setGroupingComparatorClass(cls);
3) 在Shuffle 阶段中的Comparator 如何理解作用?。
Comparator作为key的比较器,对key的排序和分组起主要作用。
4) MapReduce 执行过程中中间数据的压缩配置
在程序中将mapred.compress.map.out设置为true,并且可以设置压缩算法。
Configuration conf=new Configuration();
//设置输出压缩
conf.setBoolean("mapred.compress.map.out", true);//设置map输出压缩
conf.setBoolean("mapred.output.compress", true);//设置输出压缩
conf.setClass("mapred.output.compression.codec", GzipCodec.class,
CompressionCodec.class);//设置压缩算法 

猜你喜欢

转载自blog.csdn.net/zipo/article/details/54915389
今日推荐