hbase开启lzo压缩

hbase只支持对gzip的压缩,对lzo压缩支持不好。在io成为系统瓶颈的情况下,一般开启lzo压缩会提高系统的吞吐量。但这需要参考具体的应用场景,即是否值得进行压缩、压缩率是否足够等等。
要hbase支持lzo压缩,参照以下步骤:
1 首先要让系统支持lzo动态库,安装lzo-2.00以上版本:http://www.oberhumer.com/opensource/lzo/download/
2 默认安装完后应该在系统的/usr/local/lib/找到liblzo*等几个so
3 到http://code.google.com/p/hadoop-gpl-compression/下载lzo相关的native库4 拷贝3中下载的 hadoop-gpl-compression-0.1.0-dev.jar 或 hadoop-gpl-compression-0.1.0.jar 到 hbase/lib以及hadoop/lib 中
5 拷贝3中下载的 lib/native/* 到 hadoop/lib/native 及 hbase/lib/native
6 确保以上4/5中的文件同步到了每台regionserver上
7 在core-site.xml中加上:

Xml代码 file:///C:/Users/hadoop.HADOOP/AppData/Local/youdao/ynote/images/F8CAA3C170654BBFAE60B76ABCB8EEE3/icon_star.png
  • < span>property<
  • < span>name<io.compression.codecs</>name<
  • < span>value<com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec</>value<
  • </>property<
  • < span>property<
  • < span>name<io.compression.codec.lzo.class</>name<
  • < span>value<com.hadoop.compression.lzo.LzoCodec</>value<
  • </>property<


8 重启dfs及hbase,建表时使用:

Java代码 file:///C:/Users/hadoop.HADOOP/AppData/Local/youdao/ynote/images/FB84BB786BCB48AD84BDA90C02396AAA/icon_star.png
  • create 'mytable', {NAME=<'colfam:', COMPRESSION=<'lzo'}  


此时这个column即为lzo了,往它读写数据会自动进行lzo压缩和解压缩。

P.S:
1 如果不清楚你的hbase是否配置好了支持lzo,可以执行以下命令检查之,如果不支持的话这个命令会提示你还缺什么文件:


Java代码 file:///C:/Users/hadoop.HADOOP/AppData/Local/youdao/ynote/images/22817AFFC4B54375B94D5E37EBCCBE39/icon_star.png
  • hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://namenode:9000/test_path lzo


2 如果你和我一样使用了CDH3版本的hdfs,那么该版本的hdfs与hadoop-gpl-compression会有冲突,原因是CDH3修改了compression.java,增加了reinit()接口。
此时需要重新编译hadoop-gpl-compression工程,修改 src/java/com/hadoop/compression/lzo/LzoCompressor.java,增加以下行:


Java代码 file:///C:/Users/hadoop.HADOOP/AppData/Local/youdao/ynote/images/2C5E41BE76E1458F89A70CFE3F0F570D/icon_star.png
  • publicvoid reinit(Configuration conf) {  
  • // do nothing
  • }  



  然后重新编译工程,将生成的jar包替换以上第4步中的那个jar包

0 个评论

要回复文章请先登录注册