之前爲HBase增加SNAPPY壓縮的一篇文章:http://blackwing.iteye.com/blog/1942037
本以爲這樣hbase就能使用SNAPPY了,但發現RS的log不停報錯:
IOException: Compression algorithm 'snappy' previously failed test
根據官方教程再做一遍:http://hbase.apache.org/book/snappy.compression.html
還是報錯,後來發現差異。服務器安裝的是ubuntu 64位版本,在hadoop的lib/native/下是Linux-amd64-64文件夾,而在HBase的lib/native目錄下默認卻是Linux-i386-32,我就是把hadoop和snappy的native so文件拷貝到Linux-i386-32下。
所以在hbase的lib/natvie下新建Linux-amd64-64,再把hadoop、snappy的so文件拷過來,重啓hbase,再創建表:
create 'snappy',{NAME=>'t',COMPRESSION=>'SNAPPY'}
rs的log正常,跟着寫入數據,flush後,看到已經正常壓縮,rs log無錯誤。到此終於完整了整合snappy。
PS:確保HBASE能正確加載codec,可以在hbase-site.xml中配置:
<property>
<name>hbase.regionserver.codecs</name>
<value>snappy</value>
</property>
這樣設置後,hbase啓動就會檢查,如果不能正確加載,rs會啓動失敗,正常啓動則說明加載成功,比較保險。