hdfs文件压缩

1、
1.1、压缩格式总结
 
压缩格式 工具 算法 文件扩展名 是否可切分
DEFLATE DEFLATE .deflate
Gzip gzip DEFLATE .gz
bzip2 bzip2 bzip2 .bz2
LZO lzop LZO .lzo 是(需要建立索引)
LZ4 LZ4 .lz4
Snappy Snappy .snappy



1.2、hadoop的压缩 codec

压缩格式 HadoopCompressionCodec
DEFLATE org.apache.hadoop.io.compress.DefaultCodec
gzip org.apache.hadoop.io.compress.GzipCodec
bzip2 org.apache.hadoop.io.compress.Bzip2codec
LZO com.hadoop.compression.lzo.LzopCodec
LZ4 org.apache.hadoop.io.compress.Lz4Codec
Snappy org.apache.hadoop.io.compress.SnappyCodec


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





1.读lzo文件
需要添加以下代码,并导入lzo相关的jar包
 job.setInputFormatClass(LzoTextInputFormat.class);


2.写lzo文件
lzo格式默认是不支持splitable的,需要为其添加索引文件,才能支持多个map并行对lzo文件进行处理
如果希望reduce输出的是lzo格式的文件,添加下面的语句
        FileOutputFormat.setCompressOutput(job, true);
        FileOutputFormat.setOutputCompressorClass(job, LzopCodec.class);
        int result = job.waitForCompletion(true) ? 0 : 1;
        //上面的语句执行完成后,会生成最后的输出文件,需要在此基础上添加lzo的索引
        LzoIndexer lzoIndexer = new LzoIndexer(conf);
        lzoIndexer.index(new Path(args[1]));


如果已经存在lzo文件,但没有添加索引,可以采用下面的方法,在输入路径的文件上上添加lzo索引
Hadoop jar $HADOOP_HOME/lib/hadoop-lzo-0.4.17.jar com.hadoop.compression.lzo.LzoIndexer hdfs://inputpath
或者 
hadoop jar $HADOOP_HOME/lib/hadoop-lzo-0.4.17.jar 
com.hadoop.compression.lzo.DistributedLzoIndexe hdfs://inputpath
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值