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%小一些,但是應該影響不太大。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM