温馨提示×

centos hbase数据如何压缩

小樊
39
2025-11-16 04:35:53
栏目: 智能运维

在 CentOS 上为 HBase 启用数据压缩

一 选择压缩算法与安装本地库

  • 常用算法与特点:
    • Snappy:压缩/解压速度快、CPU 开销低,适合高吞吐在线业务,压缩率中等。
    • GZIP:压缩率高、CPU 开销高,适合离线/批量场景。
    • LZO:需额外许可与索引支持,解压快,适合流式/低延迟场景(需安装 LZO 库与索引工具)。
    • Zstandard(Zstd):较新的算法,压缩率与速度均衡,需 HBase/Hadoop 版本支持。
  • 在 CentOS 安装本地库示例:
    • Snappy:sudo yum install -y snappy snappy-devel
    • LZO:sudo yum install -y lzo lzo-devel(如需 LZO 索引/并行解压,按发行版与 Hadoop 版本准备索引工具)
    • Zstd:安装系统 zstd 开发包(如可用),并确保 Hadoop/HBase 编译时包含 ZstdCodec

二 配置 HBase 全局或表级压缩

  • 全局默认压缩(可选,影响后续新建表与列族):编辑 $HBASE_HOME/conf/hbase-site.xml,在 内添加或修改:
    • 使用 Snappy(推荐):
      <property>
        <name>hbase.regionserver.compression.type</name>
        <value>snappy</value>
      </property>
      
    • 使用 GZIP:
      <property>
        <name>hbase.regionserver.compression.type</name>
        <value>gzip</value>
      </property>
      
    • 使用 LZO:
      <property>
        <name>hbase.regionserver.compression.type</name>
        <value>lzo</value>
      </property>
      
    • 如需显式指定 Codec 类(部分版本/发行包需要):
      <property>
        <name>hbase.regionserver.compression.codec</name>
        <value>org.apache.hadoop.io.compress.SnappyCodec</value>
      </property>
      
      对应 GZIP/LZO 时使用 GzipCodec/LzoCodec。修改后重启 HBase 使全局配置生效。
  • 表/列族级压缩(对已存在表生效,不依赖全局默认):
    • HBase Shell:
      hbase shell
      # 建表时指定
      create 't1', { NAME => 'cf', COMPRESSION => 'snappy' }
      # 或给已存在列族修改
      alter 't1', NAME => 'cf', COMPRESSION => 'snappy'
      # 建议随后执行 major_compact 使存量数据重写并压缩
      major_compact 't1'
      
    • 说明:列族级 COMPRESSION 取值为 NONE/SNAPPY/GZIP/LZO/ZSTD 等;生效后新写入的数据按该算法压缩,历史数据需通过 major_compact 重写以完成压缩。

三 验证压缩是否生效

  • Shell 查看表/列族配置:
    hbase shell
    describe 't1'
    
    在输出中检查列族的 COMPRESSION 字段是否为 snappy/gzip/lzo/zstd
  • 验证 WAL 压缩(可选,降低 WAL 体积):
    hbase shell
    describe 't1'
    
    查看 WAL_COMPRESSION 是否为 true;如未启用,可在列族上设置 WAL_COMPRESSION => 'true' 并重启 RegionServer 后验证。

四 注意事项与性能建议

  • 重启策略:修改 hbase-site.xml 后需重启 HMaster/RegionServer;仅调整表/列族压缩无需重启集群。
  • 资源权衡:压缩提升存储利用率与 I/O 效率,但会增加 CPU 使用;在线高 QPS 场景优先 Snappy/Zstd,离线/批处理可优先 GZIP
  • 生效范围:全局配置影响新建表/列族;存量表需通过 alter + major_compact 重写数据文件以完成压缩。
  • 版本与依赖:确保 HBase/Hadoop 版本包含所选算法的 Codec 实现;LZO 需系统库与(可选)索引工具;Zstd 需相应编解码支持。

0