• 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代码

    • <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>  
    <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>

    重新启动dfs及hbase,建表时使用:
    Java代码

    • create 'mytable', {NAME=>'colfam:', COMPRESSION=>'lzo'}  
    create 'mytable',{NAME=>'colfam:', COMPRESSION=>'lzo'}

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

    P.S: 
    1 假设不清楚你的hbase是否配置好了支持lzo,能够运行下面命令检查之,假设不支持的话这个命令会提示你还缺什么文件:
    Java代码

    • hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://namenode:9000/test_path lzo  
    hbaseorg.apache.hadoop.hbase.util.CompressionTest hdfs://namenode:9000/test_path lzo

    假设你和我一样使用了CDH3版本号的hdfs。那么该版本号的hdfs与hadoop-gpl-compression会有冲突,原因是CDH3改动了compression.java,添加了reinit()接口。 
    此时须要又一次编译hadoop-gpl-compressionproject,改动 src/java/com/hadoop/compression/lzo/LzoCompressor.java,添加下面行:
    Java代码

    • public void reinit(Configuration conf) {       
    •   // do nothing       
    • }  
      public void reinit(Configuration conf) {
        // do nothing
      }

      
    然后又一次编译project,将生成的jar包替换以上第4步中的那个jar包

    很多其它精彩内容请关注:http://bbs.superwu.cn
    关注超人学院微信二维码:
    关注超人学院java免费学习交流群:

    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    01
    王天宇0703作业
    0706作业
    0705作业
    0704作业
    0703作业
    数据库死锁语句脚本
    项目问题 : 尝试读取或写入受保护的内存。这通常指示其他内存已损坏
    工厂模式(Factory Patter)
    修改DevExpress中英文提示,将英文改为中文
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4853549.html
Copyright © 2020-2023  润新知