【问题标题】:starting HBase error and table creation fail启动 HBase 错误和建表失败
【发布时间】:2015-07-15 19:18:57
【问题描述】:

我正在尝试关注hbase quickstart,但我遇到了一个我似乎无法解决的错误。我正在使用 hbase-0.98.7-hadoop2 发行版。当我使用bin/start-hbase.sh 启动 hbase 时,我在日志中看到:

2014-11-08 01:40:07,911 INFO  [main] util.VersionInfo: HBase 0.98.7-hadoop2
2014-11-08 01:40:07,911 INFO  [main] util.VersionInfo: Subversion git://acer/usr/src/hbase -r 800c23e2207aa3f9bddb7e9514d8340bcfb89277
2014-11-08 01:40:07,912 INFO  [main] util.VersionInfo: Compiled by apurtell on Wed Oct  8 15:58:11 PDT 2014
2014-11-08 01:40:08,195 INFO  [main] server.ZooKeeperServer: Server environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
2014-11-08 01:40:08,196 INFO  [main] server.ZooKeeperServer: Server environment:host.name=vagrant-ubuntu-precise-64
2014-11-08 01:40:08,196 INFO  [main] server.ZooKeeperServer: Server environment:java.version=1.7.0_72
2014-11-08 01:40:08,196 INFO  [main] server.ZooKeeperServer: Server environment:java.vendor=Oracle Corporation
2014-11-08 01:40:08,196 INFO  [main] server.ZooKeeperServer: Server environment:java.home=/usr/lib/jvm/jdk1.7.0_72/jre

[...]

2014-11-08 01:40:18,471 错误 [RS_OPEN_REGION-vagrant-ubuntu-precise-64:22299-0] handler.OpenRegionHandler:打开失败 region=hbase:namespace,,1415321583827.49f3bd83d8a3431fe3cd69e565920703., 开始回滚全局 memstore 大小。 java.lang.IllegalStateException:无法实例化区域 实例。 在 org.apache.hadoop.hbase.regionserver.HRegion.newHRegion(HRegion.java:4261) 在 org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4569) 在 org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4542) 在 org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4498) 在 org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4449) 在 org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.openRegion(OpenRegionHandler.java:482) 在 org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:145) 在 org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:128) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745) 引起:java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:526) 在 org.apache.hadoop.hbase.regionserver.HRegion.newHRegion(HRegion.java:4258) ... 10 更多原因:java.lang.IllegalArgumentException:需要表描述符 在 org.apache.hadoop.hbase.regionserver.HRegion.(HRegion.java:555) 在 org.apache.hadoop.hbase.regionserver.HRegion.(HRegion.java:531) ... 15 更多

现在,当我打开 HBase shell 以按照快速入门中的方式创建表时,我得到了

$ bin/hbase shell
2014-11-08 01:47:18,918 INFO  [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.7-hadoop2, r800c23e2207aa3f9bddb7e9514d8340bcfb89277, Wed Oct  8 15:58:11 PDT 2014

hbase(main):001:0> create 'test', 'cf'
2014-11-08 01:48:44,064 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

ERROR: java.io.IOException: Table Namespace Manager not ready yet, try again later
    at org.apache.hadoop.hbase.master.HMaster.getNamespaceDescriptor(HMaster.java:3172)
    at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:1727)
    at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:1766)
    at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:40470)
    at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2027)
    at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:108)
    at org.apache.hadoop.hbase.ipc.FifoRpcScheduler$1.run(FifoRpcScheduler.java:74)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

JPS 报告我有一个 HMaster 正在运行:

$ jps
1391 HMaster
1955 Jps

我什至在/etc/hosts 中也有这个

127.0.0.1 localhost
127.0.0.1 ubuntu.ubuntu-domain ubuntu

帮助?我认为这个包应该是独立的。它不应该依赖于 Zookeeper 的运行版本,对吧?

任何帮助将不胜感激。我在 Ubuntu 64 位上使用 Oracle Java 1.7.0_72。

我发现其他人的解决方案是运行 HBase 0.94,但这不是最好的解决方案。

提前致谢。

【问题讨论】:

    标签: hbase


    【解决方案1】:

    如果您在独立模式下工作,则将此脚本粘贴到 hbase-site.xml 中。根据您的系统创建一个目录 HBASE 并更改脚本。

    <configuration>
        <property>
            <name>hbase.rootdir</name>
            <value>/home/user17/HBASE/hbase</value>
        </property>
        <property>
            <name>hbase.zookeeper.property.dataDir</name>
            <value>/home/user17/HBASE/zookeeper</value>
        </property>
        <property>
            <name>hbase.zookeeper.property.clientPort</name>
            <value>2181</value>
        </property>
        <property>
            <name>hbase.master</name> 
            <value>hadoop-master:60000</value>
            </property>
    </configuration>
    

    然后在 hbase-env.sh 中设置 java 路径

    export JAVA_HOME=/home/user17/jdk/
    

    然后在.bashrc中给出hbase路径

    export HBASE_INSTALL=/home/user17/BigData/hbase-0.94.8
    export PATH=$PATH:$HBASE_INSTALL/bin
    

    然后进入hbase的bin目录运行命令

    ./start-all.sh
    
     hbase shell
    

    如果不工作请告诉我

    【讨论】:

    • 谢谢,但它不起作用。与我在问题中发布的错误相同。我可能不得不使用旧版本的 hbase: 0.94 而不是尝试 0.96 或 0.98 :(
    • 你有正确的版本。下载 zookeeper 然后去 zookeeper/conf 并更新 Directory=/home/user/zookeeper(根据你的系统)然后去 zookeerper/bin 并执行命令 ./zkServer.sh start 并通过命令 netstat 检查 2181 端口是否工作-nl|grep 2181
    • HBase 1.1.2 出现同样的问题,HBase 1.1.2 卡在 Region 上的转换 FAILED_OPEN 用于 hbase:namespace 并带有 java.lang.IllegalArgumentException:需要 RegionServer 上的表描述符异常。有什么提示吗?
    【解决方案2】:

    您有这个问题是因为您忘记在“/.../hbase/conf/regionservers”示例中输入所有“主名称和从名称”:(vim /opt/hbase/conf/regionservers)@987654321 @

    【讨论】:

    • 感谢您的注意。自从我发帖以来,我已经从 HBase 继续前进,但是当我有时间在我的项目中重新启动 HBase 时,我会尝试验证这一点..
    【解决方案3】:

    首先启动zookeeper,然后更改hbase-env.sh如下。

    # Tell HBase whether it should manage its own instance of Zookeeper or not.
    export HBASE_MANAGES_ZK=false
    

    【讨论】:

      猜你喜欢
      • 2012-01-22
      • 2013-05-19
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      相关资源
      最近更新 更多