大数据中的压缩

一、使用压缩的优缺点

优点
  1. 减少磁盘存储时间
  2. 降低网络IO以及磁盘IO
  3. 加快数据在磁盘和网络中的传输速度,从而提高系统的处理速度
缺点
  1. 使用数据时由于要先解压,加重CPU负荷

二、压缩的格式

压缩格式工具算法扩展名是否支持分割Hadoop编码/解码
DEFLATEN/ADEFLATE.deflateNoorg.apache.hadoop.io.compress.DefalutCodec
gzipgzipDEFLATE.gzNoorg.apache.hadoop.io.compress.GzipCodec
bzip2bzip2bzip2.bz2Yesorg.apache.hadoop.io.compress.Bzip2Codec
LZOLzopLZO.lzoYes(if index)com.hadoop.compression.lzo.LzoCodec
LZ4N/ALZ4.lz4Noorg.apache.hadoop.io.compress.Lz4Codec
snappyN/Asnappy.snappyNoorg.apache.hadoop.io.compress.SnappyCodec
各种压缩方式的对比
  1. gzip
    优点:
    – 压缩比在四种压缩方式中较高;
    – hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样;
    – 有hadoop native库;
    – 大部分linux系统都自带gzip命令,使用方便
    缺点:
    – 不支持split
  2. lzo
    优点:
    – 压缩/解压速度也比较快,合理的压缩率;
    – 支持split,是hadoop中最流行的压缩格式;
    – 支持hadoop native库;
    – 需要在linux系统下自行安装lzop命令,使用方便
    缺点:
    – 压缩率比gzip要低;
    – hadoop本身不支持,需要安装;
    – lzo虽然支持split,但需要对lzo文件建索引,否则hadoop也是会把lzo文件看成一个普通文件(为了支持split需要建索引,需要指定inputformat为lzo格式)
  3. snappy
    优点:
    – 压缩速度快;
    – 支持hadoop native库
    缺点:
    – 不支持split;
    – 压缩比低;
    – hadoop本身不支持,需要安装;
    – linux系统下没有对应的命令
  4. bzip2
    优点:
    – 支持split;
    – 具有很高的压缩率,比gzip压缩率都高;
    – hadoop本身支持,但不支持native;
    – 在linux系统下自带bzip2命令,使用方便
    缺点:
    – 压缩/解压速度慢;
    – 不支持native

【总结】

  • 每一种压缩方式都有他的优缺点,讲求压缩效率,压缩比就会低,占用的网络和磁盘IO就多,讲求压缩比,对cpu的损耗就比较大,同时压缩和解压缩的耗时就比较多
  • 对于支持split的(LZO 、bzip)可以实现并行处理
  • 压缩比越高,压缩速率越慢,压缩时间越长,压缩比:Snappy<LZ4<LZO<GZIP<BZIP2

【应用场景】

  • 一般在HDFS 、Hive 、 HBase中使用,一般结合Spark来一起使用

三、问题

  1. 为什么map端用snappy压缩格式
    因为使用压缩的目的是提高MR执行的效率,所以我们需要找压缩效率最高的压缩格式,snappy的压缩时间最快。
  2. 为什么Reduce端使用gzip或者bzip的压缩格式
    Reduce压缩则是对应输出文件压缩,故考虑占用磁盘空间的大小;选择高压缩比的gzip或者bzip2;由于gzip不支持分割,那么可以采用每个reduce端压缩输出的数据不要超过一个block的大小,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值