本文地址:大数据存储框架之HBase(2) 解压缩
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压缩的开启
创建表时开启压缩
create 'test', {NAME => 'info', VERSIONS => 1, COMPRESSION => 'LZO'}
已有的表开启压缩
disable 'test' ;
alter 'test', NAME => 'info', COMPRESSION => 'LZO'
enable 'test'
major_compact 'test'