更新时间:2025-07-12 GMT+08:00

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

配置场景

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

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

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

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

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

约束与限制

  • 本章节适用于MRS 3.x及后续版本。
  • LZC压缩格式不支持FSImage和SequenceFile压缩。

前提条件

已安装包含HDFS的客户端。具体操作请参考使用MRS客户端

配置LZC压缩算法

  1. 以root用户,登录安装客户端的节点。
  2. 执行以下命令,修改客户端配置文件“core-site.xml”

    vi 客户端安装路径/HDFS/hadoop/etc/hadoop/core-site.xml

  3. 根据需要修改以下参数值,并保存。

    表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