全部产品

数据压缩与编码

更新时间:2020-12-01 16:18:53

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