更新时间:2024-08-16 GMT+08:00

使用LZC压缩算法存储HDFS文件

配置场景

文件压缩可以减少储存文件的空间,并且提高数据从磁盘读取和网络传输的速度。HDFS有Gzip和Snappy这两种默认压缩格式。本章节为HDFS新增加的压缩格式LZC(Lempel-Ziv Compression)提供配置方法。这种压缩格式增强了Hadoop压缩能力。有关Snappy的详细信息,请参阅http://code.google.com/p/snappy/。

本章节适用于MRS 3.x及后续版本。

配置描述

为了使LZC压缩生效,需要在客户端的配置文件“core-site.xml”中(例如“客户端安装路径/HDFS/hadoop/etc/hadoop/”)配置如下参数。

表1 参数描述

参数

描述

默认值

io.compression.codecs

为了使LZC压缩格式生效,在现有的压缩格式列表中增加如下值:

“com.huawei.hadoop.datasight.io.compress.lzc.ZCodec”

说明:

若配置了多于一种的压缩格式需要使用英文逗号分隔。

org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.DeflateCodec,org.apache.hadoop.io.compress.Lz4Codec,org.apache.hadoop.io.compress.SnappyCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.ZStandardCodec,com.huawei.hadoop.datasight.io.compress.lzc.ZCodec

io.compression.codec.lzc.class

为了使LZC压缩格式生效,使用该参数默认值,配置参数值为“com.huawei.hadoop.datasight.io.compress.lzc.ZCodec”。

com.huawei.hadoop.datasight.io.compress.lzc.ZCodec

  • LZC压缩格式不支持FSImage和SequenceFile压缩。
  • 当前HDFS提供了多种压缩算法,包括Gzip、LZ4、Snappy、Bzip2等。这几种压缩算法的压缩比和解压速度可参考如下:

    压缩比排序:Bzip2>Gzip>LZ4>Snappy

    解压速度排序:LZ4>Snappy>Gzip>Bzip2

  • 使用场景建议:
    • 追求速度的场景(如Mapreduce任务中间数据的存储等)——建议使用LZ4和Snappy(高可靠场景,建议使用Snappy)。
    • 追求压缩比,而对压缩速度要求不高的场景(如冷数据的保存)——建议使用Bzip2或Gzip。
  • 上述压缩算法除LZC外,皆支持Native(基于C语言实现)实现,压缩和解压缩效率较高。建议根据业务场景优先选用具备Native实现的压缩算法。