使用LZC压缩算法存储HDFS文件
配置场景
文件压缩可以减少储存文件的空间,并且提高数据从磁盘读取和网络传输的速度。HDFS有Gzip和Snappy这两种默认压缩格式。本章节为HDFS新增加的压缩格式LZC(Lempel-Ziv Compression)提供配置方法。这种压缩格式增强了Hadoop压缩能力。有关Snappy的详细信息,请参阅http://google.github.io/snappy/。
- 当前HDFS提供了多种压缩算法,包括Gzip、LZ4、Snappy、Bzip2等。这几种压缩算法的压缩比和解压速度可参考如下:
解压速度排序:LZ4>Snappy>Gzip>Bzip2
- 使用场景建议:
- 追求速度的场景(如Mapreduce任务中间数据的存储等):建议使用LZ4和Snappy(高可靠场景,建议使用Snappy)。
- 追求压缩比,而对压缩速度要求不高的场景(如冷数据的保存):建议使用Bzip2或Gzip。
- 上述压缩算法除LZC外,皆支持Native(基于C语言实现)实现,压缩和解压缩效率较高。建议根据业务场景优先选用具备Native实现的压缩算法。
约束与限制
- 本章节适用于MRS 3.x及后续版本。
- LZC压缩格式不支持FSImage和SequenceFile压缩。
前提条件
已安装包含HDFS的客户端。具体操作请参考使用MRS客户端。
配置LZC压缩算法
- 以root用户,登录安装客户端的节点。
- 执行以下命令,修改客户端配置文件“core-site.xml”。
vi 客户端安装路径/HDFS/hadoop/etc/hadoop/core-site.xml
- 根据需要修改以下参数值,并保存。
表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