之前我們發現數據錄入到hbase中,數據佔用的空間變大,所以我們考慮使用壓縮來降低,下面是安裝使用lzo的過程,在這記錄一下備忘。
一、hbase添加LZO
注意:root用戶安裝,否則安裝會出現錯誤
1、首先要讓系統支持lzo動態庫,安裝lzo-2.00以上版本:http://www.oberhumer.com/opensource/lzo/download/
2、解壓 tar -zxvf lzo-2.06.tar.gz
3、進入解壓後的目錄,執行./configure --enable-shared
4、執行make進行編譯,編譯完成後執行make install進行安裝lzo
make install庫文件被默認安裝到了/usr/local/lib,將/usr/local/lib拷貝到/usr/lib下,或者在/usr/lib下建立軟連接ln -s /usr/local/lib/* .
5、到http://code.google.com/p/hadoop-gpl-compression/下載lzo相關的native庫;
6、下載的 hadoop-gpl-compression-0.1.0.jar 到 hbase/lib以及hadoop/lib 中
7、下載的hadoop-gpl-compression-0.1.0中的 lib/native/* 到 hadoop/lib/native 及 hbase/lib/native
8、確保6、7的文件同步到了每臺regionserver上
9、在core-site.xml中加上:
<property> <name>io.compression.codecs</name> <value>com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec</value> </property> <property> <name>io.compression.codec.lzo.class</name> <value>com.hadoop.compression.lzo.LzoCodec</value> </property> |
安裝完成了lzo,可以使用hbase的lzo example來驗證一下,執行一下命令:
hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://223.5.12.88:9000/user.dat lzo
二、應用
create 'test', {NAME=>'cf', COMPRESSION=>'lzo'} 按照列族壓縮
另外,在網上找了一下資料,發現lzo壓縮是發生在compress的過程中,所以向hbase中錄入數據後,使用hadoop fs -du /hbase不能很快看到數據空間變小的,或者手動執行compress,或者等待hbase自動執行compress後,才能看到效果。以下是官網截取的信息:
By enabling compression, the store file (HFile) will use a compression algorithm on blocks as they are written (during flushes and compactions) and thus must be decompressed when reading.