HBase压缩设置在CentOS上如何操作
导读:在 CentOS 上配置 HBase 压缩的完整步骤 一 准备与算法选择 压缩作用于 HBase 的列族(ColumnFamily),可与**数据块编码(Data Block Encoding)**同时使用或单独使用。HFile 默认支持...
在 CentOS 上配置 HBase 压缩的完整步骤
一 准备与算法选择
- 压缩作用于 HBase 的列族(ColumnFamily),可与**数据块编码(Data Block Encoding)**同时使用或单独使用。HFile 默认支持的压缩算法为:NONE、GZ、SNAPPY、ZSTD;数据块编码支持:NONE、PREFIX、DIFF、FAST_DIFF、ROW_INDEX_V1。一般组合是“编码+压缩”,如:FAST_DIFF + SNAPPY,兼顾压缩率与读写性能。
- 常见算法取舍:SNAPPY/ZSTD压缩/解压速度快、CPU 占用相对低;GZIP压缩率更高但 CPU 更高;LZO需额外许可与配置;LZ4速度快、压缩率一般。根据业务对吞吐/延迟/存储的权衡选择。
二 安装系统级压缩库
- 选择 Snappy 时,在 CentOS 安装库与头文件(确保 RegionServer 节点均安装):
- 安装命令:
sudo yum install -y snappy snappy-devel
- 安装命令:
- 选择 ZSTD 时,安装 zstd 开发包(若仓库提供;不同发行版包名可能为 zstd 或 libzstd-devel)。
- 如使用 LZO,需额外安装并配置 LZO 编解码器及许可。
- 安装完成后,后续步骤才能正常加载对应压缩库。
三 配置 HBase(可选,针对全局默认)
- 编辑配置文件:$HBASE_HOME/conf/hbase-site.xml,在 内按需添加(示例为 Snappy):
- 全局默认压缩算法(列族未显式指定时生效):
< property> < name> hbase.regionserver.compression.type< /name> < value> snappy< /value> < /property> - 确保 JVM 能加载本地库(如 Snappy 在 /usr/lib64/):
并在 $HBASE_HOME/conf/hbase-env.sh 中确保本地库路径可被 JVM 找到,例如:< property> < name> hbase.unsafe.stream.capability.enforce< /name> < value> false< /value> < /property>export HBASE_OPTS="$HBASE_OPTS -Djava.library.path=/usr/lib64"
- 全局默认压缩算法(列族未显式指定时生效):
- 说明:HBase 官方更推荐在列族级显式设置压缩与编码;全局项仅作为缺省值,便于统一策略。
四 在列族上启用压缩与编码
- 创建表时指定(HBase Shell):
hbase shell create 't1', { NAME => 'f1', COMPRESSION => 'SNAPPY', DATA_BLOCK_ENCODING => 'FAST_DIFF'} - 修改已有表(HBase Shell):
alter 't1', { NAME => 'f1', COMPRESSION => 'SNAPPY', DATA_BLOCK_ENCODING => 'FAST_DIFF'} - 提示:对已有数据,压缩/编码变更会在下一次 Compaction后对新生成的 HFile 生效,旧 HFile 逐步被替换。
五 重启与验证
- 重启 HBase 使全局配置生效(如使用 systemd 管理的集群):
或使用脚本:sudo systemctl restart hbase-master sudo systemctl restart hbase-regionserver$HBASE_HOME/bin/stop-hbase.sh $HBASE_HOME/bin/start-hbase.sh - 验证:
- 在 HBase Shell 查看表/列族属性:
输出中应看到列族 f1 的 COMPRESSION => ‘SNAPPY’、DATA_BLOCK_ENCODING => ‘FAST_DIFF’。describe 't1' - 观察 RegionServer 日志,确认启动时加载了对应压缩库(如 Snappy 无报错)。
- 通过 HBase Web UI 或客户端工具查看表结构与存储占用变化。
- 在 HBase Shell 查看表/列族属性:
六 常见问题与建议
- 客户端报 “ClassNotFoundException/UnsatisfiedLinkError”:多为本地库未安装或 java.library.path 未包含库目录;在 RegionServer 节点安装对应库并修正 hbase-env.sh。
- 修改未立即生效:压缩/编码对存量 HFile 需等待 Compaction;可手动触发 major compaction 加速生效。
- 性能与存储权衡:写多读多场景优先 SNAPPY/ZSTD;存储紧张可评估 GZIP;编码建议与压缩搭配使用(如 FAST_DIFF + SNAPPY)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: HBase压缩设置在CentOS上如何操作
本文地址: https://pptw.com/jishu/773025.html
