2015-10-17 38 views
0

這是我關於MapReduce的新問題。如何壓縮MapReducer的輸出?

正如我們所知Map/Reduce Output存儲在HDFS本身,所以爲了節省磁盤空間,我們可以壓縮最終的輸出並存儲它。

我們是否有任何內置函數或方法來壓縮O/P並存儲在HDFS中。

回答

1

有壓縮mapreduce輸出以及中間輸出的選項。

假設您需要壓縮gzip格式的最終​​輸出,您可以通過以下任何方式提及相同的內容。

  • 在運行jar命令

    hadoop jar <yourjar.jar> \ 
    -Dmapred.output.compress=true \ 
    -Dmapred.output.compression.type=BLOCK \ 
    -Dmapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \ 
    -input <input-path> \ 
    -output $OUTPUT \ 
    
  • 從Driver類

    FileOutputFormat.setOutputCompressorClass(job, org.apache.hadoop.io.compress.GzipCodec.class); 
    
  • 通過設置配置參數

    MRv1

    conf.set("mapred.output.compress", "true"); 
    conf.set("mapred.output.compression.type", "BLOCK"); 
    conf.set("mapred.output.compression.codec","org.apache.hadoop.io.compress.GzipCodec"); 
    

    MRv2/YARN

    conf.set("mapreduce.output.fileoutputformat.compress", "true"); 
    conf.set("mapreduce.output.fileoutputformat.compress.type", "BLOCK"); 
    conf.set("mapreduce.output.fileoutputformat.compress.codec","org.apache.hadoop.io.compress.GzipCodec");