close

最近在研究如何在HBase使用壓縮,在(http://code.google.com/p/snappy/)這裡說了,壓縮不能只是看壓縮率,而是要整體的表現,網路上也是滿多人在討論下圖的關係,甚至也有人去對這些做了實驗,而下圖大致上能說明其表現的差異,而這邊並不需要去討論誰好誰壞,因為這邊只是敘述挑選壓縮工具的需求,但注意下圖LZO的壓縮率仍比SNAPPY好(這樣放的確容易照成誤解!!)

 compare  

相信有在使用HBase的人應該都知道memstore (reach to threshold) -> flush (hfile) -> HDFS,而壓縮也是在memsotre到了threshold,然後執行snapshot完被進行,那麼HBase還有一個參數也就是當memstore到達blockingMemStoreSize,時會block客戶端(client)對服務端(server)的寫請求,故下面就對幾種場合可以對上述幾中壓縮工具進行挑選。

1. 當資料量小時,要不要壓縮就看需求而定了,Gzip是個很好的選擇。

2. 當資料量有點大,但是又需要好的壓縮比,此時請測試看看使用GZIP是否容易達到blockingMemStoreSize,若非請使用Gzip即可。

3. 當資料量大時,其實這邊要看需求了,礙於license的關係,但我是建議SNAPPY,由(http://code.google.com/p/snappy/)這裡有說,SNAPPY具有250MB/s的壓縮以及500MB/s的解壓縮能力。

注: blockingMemStoreSize = hbase.hregion.memstore.flush.size * hbase.hregion.memstore.block.multiplier

因為我是礙於license的問題,所以我是使用SNAPPY,但是LZO的安裝方式也是差不多的,請依據下面方式進行安裝,

hadoop version : 1.0.4

hbase version : 0.94.2

snappy version : 1.0.5 (http://code.google.com/p/snappy/downloads/detail?name=snappy-1.0.5.tar.gz)

1. gcc, gcc-c++, libtool, autoconf, automake, java 6一堆dependence請記得要下載^^"

2. tar xzvf snappy-1.0.5.tar.gz

3. cd snappy-1.0.5

4. ./configure

5. make

6. make install

7. cp .libs/libsnappy.*  $HADOOP_HOME/lib/native/Linux-amd64-64/

8. cp $HADOOP_HOME/lib/native/* $HBASE_HOME/lib/native

9. 注意:" 叢集中每一台"都需要有上述的步驟,可以先在master上面做,然後複製7.8的內容到叢集中的每一台上面,大家應該會有疑惑為什麼會這麼好安裝,那是因為1.x.x版後的Hadoop本身已經有codec了只是沒裝libsnappy等相關連結庫,所以只要把相關連結庫l安裝好後就能用了,LZO也是一樣,只是LZO為GPL而已。

測試有無安裝成功如下所示,compression為Snappy就是安裝成功

1. 進入HBase shell。

2. create 'testtable', {NAME => 'f1', COMPRESSION => 'snappy'}

3. describe 'testtable'(即可看到下述情況)

{NAME => 'testtable',

 FAMILIES => 

[{ NAME => 'f1',

    DATA_BLOCK_ENCODING => 'NONE',

    BLOOMFILTER =>'NONE',

    REPLICATION_SCOPE => '0',

    VERSIONS => '3',

    COMPRESSION => 'SNAPPY',

    MIN_VERSIONS => '0',

    TTL =>'2147483647',

    KEEP_DELETED_CELLS => 'false',

    BLOCK SIZE => '65536',

    IN_MEMORY => 'false',

    ENCODE_ON_DISK => 'true',

    BLOCKCACHE => 'true'}]

}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 TonyMoMo 的頭像
    TonyMoMo

    TonyMoMo的部落格

    TonyMoMo 發表在 痞客邦 留言(0) 人氣()