背景描述:想导出 服务器HBase里面的一张表remine_4520及其数据,我能通过java连接HBase库,浏览器能访问master的信息。
 
方案:版本一样的话直接distcp表目录过来   然后hbck一下就行
 
HBase0.94.8,Hadoop 1.1.2,集群使用了loz压缩,远端HBase master节点域名为namenode
 
期间遇到了各种问题
 
问题1:执行 ./hadoop distcp hdfs://namenode/hbase/remine_4250 hdfs://127.0.0.1/hbase
 
      现象:opy failed: java.net.ConnectException: Call to namenode/10.20.5.34:8020 failed on connection exception: java.net.ConnectException: Connection refused
 
      解决:去60010界面查看HBase Root Directory,发现端口是9000
 
 
问题2:执行
 
./hadoop distcp hdfs://namenode:9000/hbase/remine_4520 hdfs://127.0.0.1:9000/hbase
 
 现象:
 
(1)ERROR: Region { meta => null, hdfs =>hdfs://127.0.0.1:9000/hbase/remine_4520/ 50fffa73ecb465862055801ed8248428 deployed =>  } on HDFS, but not listed in META or deployed on any region server;
 
(2)util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned
 
(3)failed to move out of transition within timeout 120000ms
 
解决:看看他把region分到了哪个rs上  然后去看那个rs的log
 
发现只有一个Region Server,于是直接去 $HBASE_HOME$/logs目录查看日志
 
 
问题3:现象:
 
java.io.IOException: Compression algorithm 'lzo' previously failed test.
 
解决:安装lzo和hadoop-lzo
 
从hdfs://namenode:60010/logs/**-regionserver-ubuntu.log 界面查看日志,得知远端集群使用的是hadoop-lzo-0.4.15.jar
 
 
问题4:下载安装lzo-2.09 http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz
 
 
$ tar -zxvf lzo-2.09.tar.gz
 
$ cd lzo-2.09
 
$ ./configure --enable-shared --prefix /usr/local/lzo-2.09
 
$ make && sudo make install
 
 
问题5:下载安装hadoop-lzo-0.4.15
 
从https://codeload.github.com/toddlipcon/hadoop-lzo/tar.gz/0.4.15下载
 
解压后
 
执行 ant package
 
 
编译期间遇到如下问题
 
参考了http://hi.baidu.com/qingchunranzhi/item/72155fd1ccf5e05bd73aaebc
 
问题6: [javah] 错误: 找不到类org.apache.hadoop.conf.Configuration。
 
加入一行
 
解决: 在 build.xml 里面添加一行
 
  <target name="compile-java" depends="init">
 
    <javac 
 
    includeantruntime="false"
 
     encoding="${build.encoding}" 
 
     srcdir="${java.src.dir}"   
 
     includes="**/*.java"
 
     destdir="${build.classes}"
 
     debug="${javac.debug}"
 
     optimize="${javac.optimize}"
 
     target="${javac.version}"
 
     source="${javac.version}"
 
     deprecation="${javac.deprecation}">
 
      <compilerarg line="${javac.args} ${javac.args.warnings}" />
 
      <classpath refid="classpath"/>
 
    </javac>
 
 
    <copy todir="${build.classes}">
 
      <fileset dir="${java.src.dir}" includes="**/*.properties"/>
 
    </copy>
 
 
  </target>
 
问题7: 还是[javah] 错误: 找不到类org.apache.hadoop.conf.Configuration。
 
解决:在 build.xml 里面添加一行
 
    <javah classpath="${build.classes}"
 
           destdir="${build.native}/src/com/hadoop/compression/lzo"
 
           force="yes"
 
           verbose="yes">
 
      <class name="com.hadoop.compression.lzo.LzoCompressor" />
 
      <class name="com.hadoop.compression.lzo.LzoDecompressor" />
 
     <classpath refid="classpath" />
 
    </javah>
 
问题8:ERROR lzo.GPLNativeCodeLoader: Could not load native gpl library
 
解决方案:拷贝文件hadoop-lzo-0.4.15/build/native/Linux-amd64-64/lib/*到目标目录
 
$HADOOP_HOME/lib/native/Linux-amd64-64 和 $HBASE_HOME/lib/native/Linux-amd64-64
 
 
问题9:最后执行修复命令
 
尝试修复错误
 
./hbase  hbck -fix
 
修复所有错误
 
./hbase  hbck -repairHoles
 
 
附:hbase classpath设置包含hadoop的?
 
export HBASE_CLASSPATH=$HBASE_CLASSPATH:`hadoop classpath`
 
查看目录下文件列表
 
hadoop fs -ls hdfs://namenode:9000/hbase
 
编译完hadoop-lzo后,hadoop-lzo-0.4.15.jar要同时拷贝到$HADOOP_HOME/lib和$HBASE_HOME/lib
          
            
          
             
已有   0 人发表留言,猛击->>  这里<<-参与讨论
          
             
ITeye推荐