压缩的好处和坏处

1. 压缩的好处和坏处

压缩技术分为有损和无损:大数据场景下我们用到的都是无损;不允许丢失数据

好处

  1. 节省我们的磁盘空间,提升磁盘利用率
  2. 降低IO(网络的IO和磁盘的IO)
  3. 加快数据在磁盘和网络中的传输速度,从而提高系统的处理速度

缺点

  1. 由于使用数据时,需要先将数据解压,加重CPU负荷;所以如果整个集群cpu利用率非常高,不要开压缩;若集群负载不高,强烈建议开压缩!

压缩在Hadoop中的应用

离线压缩场景

  1. input: Flume Sink HDFS < == Spark/MapReduce ##采用可分片的压缩方式
  2. temp: Sink DISK ## 采用速度快的压缩方式
  3. output: Spark/MapReduce = => Sink Hadoop ## 视情况而定采用

2. 压缩格式

压缩格式工具算法扩展名codec类多文件splitablenativehadoop自带Hadoop编解码
deflatedeflate.deflateDeflateCodecorg.apache.hadoop.io.compress.DeflateCodec
gzipgzip deflate.gzGzipCodecorg.apache.hadoop.io.compress.GzipCodec
bzip2bzip2bzip2.bz2Bzip2Codecorg.apache.hadoop.io.compress.Bzip2Codec
lzolzoplzo.lzoLzopCodec是[ifIndex]com.hadoop.compression.lzo.LzoCodec
lz4lz4.lz4Lz4Codecorg.apache.hadoop.io.compress.Lz4Codec
SnappySnappy.snappySnappyCodecorg.apache.hadoop.io.compress.SnappyCodec

注:压缩格式中,有的不支持native是因为缺少so包(有的压缩是java写的,有的是c写的,比如lzo就是c写的)

压缩比

压缩格式压缩比压缩速度解压速度
Snappy49.9%218.8MB/s70.7MB/s
LZ449.3%217.5MB/s594.4MB/s
LZO48.7%184.3MB/s125.6MB/s
Gzip/deflate31.8%16.3MB/s64.2MB/s
Bzip227.7%9.8MB/s22.2MB/s

 可以看出,压缩比越高,压缩时间越长,压缩比:Snappy<LZ4<LZO<GZIP<BZIP2

3.压缩格式各自优缺点

a. gzip

优点:
压缩比在四种压缩方式中较高;hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样;有hadoop native库;大部分linux系统都自带gzip命令,使用方便

缺点:
不支持split

b. lzo

优点:
压缩/解压速度也比较快,合理的压缩率;支持split,是hadoop中最流行的压缩格式;支持hadoop native库;需要在linux系统下自行安装lzop命令,使用方便

缺点:
压缩率比gzip要低;hadoop本身不支持,需要安装;lzo虽然支持split,但需要对lzo文件建索引,否则hadoop也是会把lzo文件看成一个普通文件(为了支持split需要建索引,需要指定inputformat为lzo格式)

c. snappy

优点:
压缩速度快;支持hadoop native库

缺点:
不支持split;压缩比低;hadoop本身不支持,需要安装;linux系统下没有对应的命令

d. bzip2

优点:
支持split;具有很高的压缩率,比gzip压缩率都高;hadoop本身支持,但不支持native;在linux系统下自带bzip2命令,使用方便

缺点:
压缩/解压速度慢;不支持native

 

总结: 
    不同的场景选择不同的压缩方式,肯定没有一个一劳永逸的方法,如果选择高压缩比,那么对于cpu的性能要求要高,同时压缩、解压时间耗费也多;选择压缩比低的,对于磁盘io、网络io的时间要多,空间占据要多;对于支持分割的,可以实现并行处理。

应用场景:

    input: Flume Sink HDFS <== Spark/MapReduce 比如flume采集到hdfs会使用到压缩
    temp:   Sink DISK  比如中间数据落地磁盘也可以使用压缩
    output: Spark/MapReduce ==> Sink Hadoop 比如spark/mr的输出会到hdfs使用到压缩

一般在HDFS 、Hive、HBase中会使用;

当然一般较多的是结合Spark 来一起使用。


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值