Hadoop權威指南:大數據的存儲與分析》—5.2.3 在MapReduce中使用壓縮

      網友投稿 695 2025-04-03

      5.2.3? 在MapReduce中使用壓縮


      前面講到通過CompressionCodecFactory來推斷CompressionCodec時指出,如果輸入文件是壓縮的,那么在根據文件擴展名推斷出相應的codec后,MapReduce會在讀取文件時自動解壓縮文件。

      要想壓縮MapReduce作業的輸出,應在作業配置過程中將mapreduce. output.fileoutputformat.compress屬性設為true,將mapre-duce. output.fileoutputformat.compress.codec屬性設置為打算使用的壓縮codec的類名。另一種方案是在FileOutputFormat中使用更便捷的方法設置這些屬性,如范例5-4所示。

      范例5-4. 對查找最高氣溫作業所產生輸出進行壓縮

      public class MaxTemperatureWithCompression {

      public static void main(String[] args) throws IOException {

      if (args.length != 2) {

      System.err.println("Usage: MaxTemperatureWithCompression " +

      "");

      System.exit(-1);

      }

      Job job = new Job();

      job.setJarByClass(MaxTemperature.class);

      FileInputFormat.addInputPath(job, new Path(args[0]));

      FileOutputFormat.setOutputPath(job, new Path(args[1]));

      job.setOutputKeyClass(Text.class);

      job.setOutputValueClass(IntWritable.class);

      FileOutputFormat.setCompressOutput(job, true);

      FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class);

      job.setMapperClass(MaxTemperatureMapper.class);

      job.setCombinerClass(MaxTemperatureReducer.class);

      job.setReducerClass(MaxTemperatureReducer.class);

      System.exit(job.waitForCompletion(true) ? 0 : 1);

      }

      }

      我們按照如下指令對壓縮后的輸入運行程序(輸出數據不必使用相同的壓縮格式進行壓縮,盡管本例中不是這樣):

      % hadoop MaxTemperatureWithCompression input/ncdc/sample.txt.gz output

      最終輸出的每個部分都是經過壓縮的。在這里,只有一部分結果:

      % gunzip -c output/part-r-00000.gz

      1949??? 111

      1950??? 22

      如果為輸出生成順序文件(sequence file),可以設置mapreduce.out put.fileoutputformat.compress.type屬性來控制限制使用壓縮格式。默認值是RECORD,即針對每條記錄進行壓縮。如果將其改為BLOCK,將針對一組記錄進行壓縮,這是推薦的壓縮策略,因為它的壓縮效率更高(參見5.4.1節)。

      SequenceFileOutputFormat類另外還有一個靜態方法putCompressionType(),可以用來便捷地設置該屬性。

      《Hadoop權威指南:大數據的存儲與分析》—5.2.3 在MapReduce中使用壓縮

      表5-5歸納概述了用于設置MpaReduce作業輸出的壓縮格式的配置屬性。如果你的MapReduce驅動使用Tool接口(參見6.2.2節),則可以通過命令行將這些屬性傳遞給程序,這比通過程序代碼來修改壓縮屬性更加簡便。

      表5-5. MapReduce的壓縮屬性

      屬性名稱

      類型

      默認值

      描述

      mapreduce.output.

      fileoutputformat.compress

      boolean

      false

      是否壓縮輸出

      mapreduce.output.

      fileoutputformat.

      compress.codec

      類名稱

      org.apache.hadoop.io.

      compress.DefaultCodec

      map輸出所用的壓縮codec

      mapreduce.output.

      fileoutputformat.

      compress.type

      String

      RECORD

      順序文件輸出可以使用的壓縮類型:NONE、RECORD或者BLOCK

      盡管MapReduce應用讀/寫的是未經壓縮的數據,但如果對map階段的中間輸入進行壓縮,也可以獲得不少好處。由于map任務的輸出需要寫到磁盤并通過網絡傳輸到reducer節點,所以通過使用LZO、LZ4或者Snappy這樣的快速壓縮方式,是可以獲得性能提升的,因為需要傳輸的數據減少了。啟用map任務輸出壓縮和設置壓縮格式的配置屬性如表5-6所示。

      表5-6. map任務輸出的壓縮屬性

      屬性名稱

      類型

      默認值

      描述

      mapreduce.map.

      output.compress

      boolean

      false

      是否對map任務輸出進行壓縮

      mapreduce.map.

      output.compress.codec

      Class

      org.apache.hadoop.io.

      compress.DefaultCodec

      map輸出所用的壓縮codec

      下面是在作業中啟用map任務輸出gzip壓縮格式的代碼(使用新API):

      Configuration conf = new Configuration();

      conf.setBoolean(Job.MAP_OUTPUT_COMPRESS, true);

      conf.setClass(Job.MAP_OUTPUT_COMPRESS_CODEC, GzipCodec.class,

      CompressionCodec.class);

      Job job = new Job(conf);

      在舊的API中(參見附錄D),JobConf對象中可以通過更便捷的方法實現該功能:

      conf.setCompressMapOutput(true);

      conf.setMapOutputCompressorClass(GzipCodec.class);

      大數據 Hadoop MapReduce

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:表格sum求和怎么用(excel表格怎么求和)
      下一篇:服務器】在 iPad 上運行 VSCode(寶塔+code server)
      相關文章
      亚洲kkk4444在线观看| 久久99国产亚洲精品观看| 中文字幕亚洲综合久久| 亚洲色图黄色小说| 亚洲一区二区三区国产精品| 亚洲精品乱码久久久久久久久久久久| 亚洲中文无码卡通动漫野外| 亚洲第一视频网站| 亚洲成av人影院| 亚洲精品无播放器在线播放| 亚洲人成77777在线播放网站不卡| 亚洲日本一区二区三区在线| 国产亚洲视频在线观看网址| 丁香亚洲综合五月天婷婷| 久久无码av亚洲精品色午夜| 国产天堂亚洲精品| 亚洲人成网站在线观看青青| 久久精品国产亚洲精品| 国产亚洲精品AA片在线观看不加载 | 久久精品国产亚洲av品善| 日韩亚洲国产二区| 亚洲成AV人网址| 国产亚洲精品a在线观看| 国产亚洲精品无码专区 | 亚洲午夜久久久久久尤物| 亚洲专区一路线二| 亚洲熟妇丰满xxxxx| 国产亚洲漂亮白嫩美女在线| 亚洲精品tv久久久久| 亚洲国产婷婷综合在线精品| 国产AⅤ无码专区亚洲AV | 亚洲精品无码少妇30P| 男人的天堂亚洲一区二区三区 | 亚洲精品视频免费看| 久久久亚洲AV波多野结衣| 亚洲噜噜噜噜噜影院在线播放| 亚洲日本久久一区二区va| 亚洲色少妇熟女11p| 亚洲А∨精品天堂在线| 伊人久久大香线蕉亚洲五月天 | 日韩国产欧美亚洲v片|