温馨提示×

HBase数据压缩Debian配置方法

小樊
40
2025-12-13 05:32:21
栏目: 智能运维

在 Debian 上配置 HBase 数据压缩

一 环境准备与依赖安装

  • 在所有节点安装编译与运行依赖(以 Debian 9/10/11 为例):
    • 安装基础工具与库:sudo apt-get update && sudo apt-get install -y build-essential cmake maven libtool zlib1g-dev libsnappy-dev
    • 确认 Java 环境:java -version(HBase 2.x/3.x 建议使用 JDK 8
    • 准备压缩库源码:Snappy 1.1.x(https://github.com/google/snappy/releases)
    • 如需使用 Hadoop Snappy(部分发行版/构建需要):准备 hadoop-snappy 源码(https://github.com/electrum/hadoop-snappy)
  • 说明:HBase 读写 HFile 的压缩由 Hadoop native 库提供,HBase 通过 JNI 调用;因此需在各节点的 RegionServer/DataNode 上部署 native 库与对应 jar。

二 编译与部署 Snappy native 库

  • 编译 Snappy:
    • tar xf snappy-1.1.3.tar.gz && cd snappy-1.1.3
    • ./configure --prefix=/usr/local/snappy
    • make -j$(nproc) && sudo make install
    • 验证:ls /usr/local/lib/libsnappy.so*(应看到 so.1 等文件)
  • 部署到 Hadoop 与 HBase native 目录(各节点执行):
    • 建议将 Snappy 库放入 Hadoop 的 native 目录(如 $HADOOP_HOME/lib/native),并确保 HBase 可访问同一目录(如 $HBASE_HOME/lib/native/Linux-amd64-64;目录不存在则创建)。
    • 如使用 hadoop-snappy,将其构建产物中的 native 库hadoop-snappy-*.jar 一并分发到 Hadoop 与 HBase 的对应 lib 目录。

三 Hadoop 与 HBase 配置

  • Hadoop 侧(core-site.xml,所有节点一致):
    • 添加/确保包含 Snappy 编解码器:
      <property>
        <name>io.compression.codecs</name>
        <value>org.apache.hadoop.io.compress.SnappyCodec</value>
      </property>
      
    • 可选(部分版本/构建需要):将 hadoop-snappy jar 放入 Hadoop 的 classpath(如 $HADOOP_HOME/share/hadoop/common/lib)。
  • HBase 侧(hbase-site.xml,所有节点一致):
    • 无需在 hbase-site.xml 全局指定压缩算法;压缩在 列族级设置(见第四节)。
  • 分发与重启:
    • 将 native 库与 jar 同步到所有节点后,依次重启 HDFSHBase

四 验证与在 HBase 中启用压缩

  • 验证 native 库加载:
    • hadoop checknative -a(应看到 snappy: true 及对应 so 文件路径)
    • hbase org.apache.hadoop.hbase.util.CompressionTest /tmp/test snappy(应返回 SUCCESS
  • 在表中启用压缩(HBase Shell):
    • 建表时指定列族压缩:
      create 't1', { NAME => 'cf1', COMPRESSION => 'snappy' }
      describe 't1'   # 确认 COMPRESSION => 'snappy'
      
    • 对已有表列族启用/修改压缩(会触发重写/压缩,建议在低峰期执行):
      disable 't1'
      alter 't1', { NAME => 'cf1', COMPRESSION => 'snappy' }
      enable 't1'
      major_compact 't1'
      
  • 常见算法选择:
    • Snappy:压缩/解压速度快、资源占用适中,适合在线业务与通用场景。
    • GZIP:压缩率高、速度较慢,适合冷数据归档。
    • LZO:需额外授权与配置,速度较快、压缩率一般。

五 常见问题与排查

  • checknative 显示 snappy: false 或 CompressionTest 失败:
    • 检查 native 库路径是否被 Hadoop/HBase 正确加载(LD_LIBRARY_PATH、java.library.path、HADOOP_OPTS/HBASE_OPTS 等)。
    • 确认各节点 Snappy so 文件一致且位数匹配(如 Linux-amd64-64)。
    • 如使用 hadoop-snappy,确认 jar 在 classpath 且与 native 版本匹配。
  • 修改列族压缩后长时间卡住或进入异常状态:
    • 大表直接改压缩会触发大量重写/压缩,可能导致 Region 长时间 RIT。建议分批、在低峰期执行,并提前做好 备份与容量评估

0