1. 壓縮算法的比較
算法 | 壓縮比 | 壓縮 | 解壓 |
---|---|---|---|
GZIP | 13.4% | 21MB/s | 118MB/s |
LZO | 20.5% | 135MB/s | 410MB/s |
Snappy/Zippy | 22.2% | 172MB/s | 409MB/s |
總結:
1)GZIP的壓縮率最高,但它是CPU密集型的,對CPU的消耗較多,壓縮和解壓速度也慢;
2)LZO的壓縮率居中,比GZIP要低一些,但是壓縮和解壓速度明顯要比GZIP快很多,其中解壓速度快的更多;
3)Zippy/Snappy的壓縮率最低,而壓縮和解壓速度要稍微比LZO要快一些
所以,一般情況下,推薦使用Snappy和Zippy壓縮算法。
2. hbase表啟用壓縮的步驟
這里分為兩種情況:一是在創建表時指定壓縮算法;二是在創建表后指定壓縮算法或者修改壓縮算法。
2.1 創建表時指定壓縮算法
create 'test', {NAME => 'info', VERSIONS => 1, COMPRESSION => 'snappy'}
# 表創建之后,使用describe命令查看表信息
describe 'test'
2.2 創建表后指定或修改壓縮算法
- disable需要修改的表
disable 'test'
注意,如果表較大,disable需要一些時間,請耐心等待
2) 使用alter命令進行更改
alter 'test', NAME => 'info', COMPRESSION => 'snappy'
NAME即column family,列族。HBase修改壓縮格式,需要一個列族一個列族的修改,注意大小寫,不要弄錯了。如果修改錯了,將會創建一個新的列族,且壓縮格式為snappy。當然,假如你還是不小心創建了一個新列族的話,可以通過以下方式刪除:
alter 'test', {NAME=>'info', METHOD=>'delete'}
- 重新enable表
enable 'test'
- 對表進行major_compact操作,使壓縮生效
major_compact 'test'
注意,如果表的數據較多,該操作需要較長時間,所以盡量選擇一個不忙的時間,避免對服務造成影響。
修改完成后,可使用describe命令查看表信息