HBase作为大数据存储框架中性能等各方面都比较优秀的框架,面对着大量数据的冲击,我们一般会使用对数据进行压缩来进行存储。就像在Hive中,我们会用到LZO压缩,在Hadoop中,我们会使用Snappy压缩。
HBase中压缩算法的比较
以下数据是Google在2005年发布的一个测试数据。
Algorithm |% remaining| Encoding | Decoding
—|–|—|—
GZIP | 13.4% |21 MB/s |118 MB/s
LZO |20.5% | 135 MB/s |410 MB/s
Zippy/Snappy |22.2% |172 MB/s |409 MB/s
数据来源HBase: The Definitive Guide
1)GZIP的压缩率最高,但是其实CPU密集型的,对CPU的消耗比其他算法要多,压缩和解压速度也慢;
2)LZO的压缩率居中,比GZIP要低一些,但是压缩和解压速度明显要比GZIP快很多,其中解压速度快的更多;
3)Zippy/Snappy的压缩率最低,而压缩和解压速度要稍微比LZO要快一些。
下面是阿里云云数据库HBase版中关于几个压缩算法的开发指南。
业务类型 | 无压缩表大小 | 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 |
HBase压缩的开启
创建表时开启压缩
1 | create 'test', {NAME => 'info', VERSIONS => 1, COMPRESSION => 'LZO'} |
已有的表开启压缩
1 | disable 'test' ; |