
# 使用LZC压缩算法存储HDFS文件
#### 配置场景
文件压缩可以减少存储文件的空间，并且提高数据从磁盘读取和网络传输的速度。HDFS有Gzip和Snappy这两种默认压缩格式。本章节为HDFS新增加的压缩格式LZC（Lempel-Ziv Compression）提供配置方法。这种压缩格式增强了Hadoop压缩能力。有关Snappy的详细信息，请参阅<https://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客户端](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2126.html)。
#### 配置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                                                                                                                                                                                                                                                                                                      |
      
   
   
 
