mapreduce的reduce输出文件进行压缩

转:http://tydldd.iteye.com/blog/2053946

 

hadoop对每个压缩格式的支持,详细见下表:

 

 压缩格式  工具  算法  文件扩展名  多文件  可分割性
 DEFLATE  无  DEFLATE  .deflate  不  不
 gzip  gzip  DEFLATE  .gz  不  不
 ZIP  zip  DEFLATE  .zip  是  是,在文件范围内
 bzip2  bzip2  bzip2  .bz2  不  是
 LZO  lzop  LZO  .lzo  不  否

 

 

 

 

 

 

 

 

 

hadoop下各种压缩算法的压缩比,压缩时间,解压时间见下表:

 

压缩算法 原始文件大小 压缩后的文件大小 压缩速度 解压缩速度
gzip 8.3GB 1.8GB 17.5MB/s 58MB/s
bzip2 8.3GB 1.1GB 2.4MB/s 9.5MB/s
LZO-bset 8.3GB 2GB 4MB/s 60.6MB/s
LZO 8.3GB 2.9GB 49.3MB/S 74.6MB/s

 

 

 

 

 

 

现在最常用的压缩方式是gzip和lzo。两者相比:gzip压缩想过更好能达到原大小的25%,LZO则能到30%-40%。lzo的压缩和解压速度更快,lzo的解压速度大概是gzip的3倍左右

 

 

对输出文件进行压缩很简单,只需要     1、指定作业使用压缩 2、指定压缩格式

 

Java代码    收藏代码
  1. Configuration conf = new Configuration();  
  2.             //map任务中间输出使用gzip压缩-------不能用  
  3. //          conf.setBoolean("mapred.compress.map.output", true);    
  4. //          conf.setClass("mapred.map.output.compression.codec",GzipCodec.class, CompressionCodec.class);  
  5.               
  6.             Job job = new Job(conf, "wordcount Job");  
  7.             job.setOutputKeyClass(Text.class);  
  8.             job.setOutputValueClass(IntWritable.class);  
  9.             job.setMapperClass(mapperString.class);  
  10. //          job.setCombinerClass(reduceStatistics.class);  
  11.             job.setReducerClass(reduceStatistics.class);  
  12.               
  13.             FileInputFormat.addInputPath(job, new Path(in));  
  14.             FileOutputFormat.setOutputPath(job, new Path(out));  
  15.               
  16.             //将reduce输出文件压缩  
  17.             FileOutputFormat.setCompressOutput(job, true);  //job使用压缩  
  18.             FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class); //设置压缩格式  
  19.               
  20.             job.waitForCompletion(true);  

 

 

执行结果:

 

Xml代码    收藏代码
  1. nange@ubuntu:~/work/test/word$ hadoop fs -ls /hdfs/test/wordcount/out/  
  2. Found 6 items  
  3. -rw-r--r--   3 nange supergroup          0 2014-04-24 09:57 /hdfs/test/wordcount/out/_SUCCESS  
  4. drwxr-xr-x   - nange supergroup          0 2014-04-24 09:57 /hdfs/test/wordcount/out/hadoop  
  5. -rw-r--r--   3 nange supergroup         28 2014-04-24 09:57 /hdfs/test/wordcount/out/hello-r-00000.gz  
  6. -rw-r--r--   3 nange supergroup         29 2014-04-24 09:57 /hdfs/test/wordcount/out/other-r-00000.gz  
  7. -rw-r--r--   3 nange supergroup         20 2014-04-24 09:57 /hdfs/test/wordcount/out/part-r-00000.gz  
  8. -rw-r--r--   3 nange supergroup         28 2014-04-24 09:57 /hdfs/test/wordcount/out/world-r-00000.gz  

 

 查看gzip文件

 

Xml代码    收藏代码
  1. nange@ubuntu:~/work/test/word$ hadoop fs -text /hdfs/test/wordcount/out/hadoop/-r-00000.gz  
  2. hadoop  1  

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值