mapreduce的reduce输出文件进行压缩

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.8GB17.5MB/s58MB/s
bzip28.3GB1.1GB2.4MB/s9.5MB/s
LZO-bset8.3GB2GB4MB/s60.6MB/s
LZO8.3GB2.9GB49.3MB/S74.6MB/s

 

 

 

 

 

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

 

 

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

Configuration conf = new Configuration();
			//map任务中间输出使用gzip压缩-------不能用
//			conf.setBoolean("mapred.compress.map.output", true);  
//		    conf.setClass("mapred.map.output.compression.codec",GzipCodec.class, CompressionCodec.class);
		    
			Job job = new Job(conf, "wordcount Job");
			job.setOutputKeyClass(Text.class);
			job.setOutputValueClass(IntWritable.class);
			job.setMapperClass(mapperString.class);
//			job.setCombinerClass(reduceStatistics.class);
			job.setReducerClass(reduceStatistics.class);
			
			FileInputFormat.addInputPath(job, new Path(in));
			FileOutputFormat.setOutputPath(job, new Path(out));
			
			//将reduce输出文件压缩
			FileOutputFormat.setCompressOutput(job, true);  //job使用压缩
	        FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class); //设置压缩格式
	        
			job.waitForCompletion(true);

 

执行结果:

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

 查看gzip文件

nange@ubuntu:~/work/test/word$ hadoop fs -text /hdfs/test/wordcount/out/hadoop/-r-00000.gz
hadoop	1

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值