1. 程式人生 > >九、用圖講解MapReduce Shuffle 過程

九、用圖講解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);//設定壓縮演算法