本文主要介绍Hbase在数据压缩与编码中的实际应用。

压缩算法

目前阿里云平台支持压缩算法有: LZO、ZSTD、GZ、LZ4、SNAPPY NONE,其中NONE就代表不开启压缩。不同压缩算法在不同场景的压缩比,及解压速度对比如下,都是来自线上真实场景。

业务类型 无压缩表大小 LZO(压缩率/解压速度MB/s) ZSTD(压缩率/解压速度MB/s) LZ4(压缩率/解压速度MB/s)
监控类 419.75T 5.82/372 13.09/256 5.19/463.8
日志类 77.26T 4.11/333 6.0/287 4.16/496.1
风控类 147.83T 4.29/297.7 5.93/270 4.19/441.38
消费记录 108.04T 5.93/316.8 10.51/288.3 5.55/520.3
说明
  • 对rt要求极高,建议使用lz4压缩算法。
  • 对rt要求不高,特别是监控、物联网等场景,建议使用zstd压缩算法。

编码

HBase很早就支持了DataBlockEncoding,即通过减少HBase keyvalue中重复的部分来压缩数据。我们推荐DATA_BLOCK_ENCODING使用diff。

操作步骤

  1. 修改表的属性,此为压缩编码。
    alter 'test', {NAME => 'f', COMPRESSION => 'lz4', DATA_BLOCK_ENCODING =>'DIFF'}
  2. 压缩编码并不会立即生效,需要major_compact,此会耗时较长,注意在业务低峰期进行。
    major_compact 'test'
说明 压缩编码的参考文档请参见阿里HBase数据压缩编码探索