数据压缩与编码

本文主要介绍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数据压缩编码探索