使用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/”)配置如下参数。
参数 |
描述 |
默认值 |
---|---|---|
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等。这几种压缩算法的压缩比和解压速度可参考如下:
解压速度排序:LZ4>Snappy>Gzip>Bzip2
- 使用场景建议:
- 追求速度的场景(如Mapreduce任务中间数据的存储等)——建议使用LZ4和Snappy(高可靠场景,建议使用Snappy)。
- 追求压缩比,而对压缩速度要求不高的场景(如冷数据的保存)——建议使用Bzip2或Gzip。
- 上述压缩算法除LZC外,皆支持Native(基于C语言实现)实现,压缩和解压缩效率较高。建议根据业务场景优先选用具备Native实现的压缩算法。