HBase修改壓縮格式及Snappy壓縮實測分享

HBase修改壓縮格式及Snappy壓縮實測分享

一、要點

有關Snappy的相關介紹可參看Hadoop壓縮-SNAPPY算法,如果想安裝Snappy,可以參看Hadoop HBase 配置 安裝 Snappy 終極教程

1. HBase修改Table壓縮格式步驟

2. 實測結果分享

二、HBase修改Table壓縮格式步驟

修改HBase壓縮算法很簡單,只需要如下幾步:

1. hbase shell命令下,disable相關表:

1
disable 'test'

實際產品環境中,’test’表可能很大,例如上幾十T的數據,disable過程會比較緩慢,需要等待較長時間。disable過程可以通過查看hbase master log日誌監控。

2. 修改表的壓縮格式

1
alter 'test', NAME => 'f', COMPRESSION => 'snappy'

NAME即column family,列族。HBase修改壓縮格式,需要一個列族一個列族的修改。而且這個地方要小心,別將列族名字寫錯,或者大小寫錯誤。因爲這個地方任何錯誤,都會創建一個新的列族,且壓縮格式爲snappy。當然,假如你還是不小心創建了一個新列族的話,可以通過以下方式刪除:

1
alter 'test', {NAME=>'f', METHOD=>'delete'}

同樣提醒,別刪錯列族,否則麻煩又大了~

3. 重新enable表

1
enable 'test'

4. enable表後,HBase表的壓縮格式並沒有生效,還需要一個動作,即HBase major_compact

1
major_compact 'test'

該動作耗時較長,會對服務有很大影響,可以選擇在一個服務不忙的時間來做。

describe一下該表,可以看到HBase 表壓縮格式修改完畢。

二、 實測結果分享

1. 線上有一個稍微大些的表,壓測前的大小是

1
2
[xxxx]hadoop fs -du /hbase/tablename
37225209575949    hdfs://xxxx:9000/hbase/tablename

也即33.85613088171249T

2. 等最終major_compact完畢後,數據大小爲

[xxxx]hadoop fs -du /hbase/tablename
14910587650937    hdfs://xxxx:9000/hbase/tablename

即剩餘13.56110046884805T,壓縮掉20.29503041286444T

3. 實測情況下,remaining爲:

13.56110046884805/33.85613088171249 = 40.055%

跟網上流傳的最好效果22.2%還是有一定差距的。但是Google Snappy官網上也說,爲達到更高的壓縮速度,Snappy允許損失一些壓縮率。

有一點需要說明,因爲是線上服務,所以在修改壓縮格式後,至comact結束,中間有入庫操作,大概有一週到兩週的數據入庫。也就是說,實際值要比40.055%小一些,但是應該影響不太大。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章