之前我们发现数据录入到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.