HBase因org.apache.hadoop.hbase.NotServingRegionException区域未联机而失败

时间:2016-05-29 08:40:30

标签: asynchronous hbase apache-zookeeper

我有一个异步应用程序,使用async-hbase-client.

将数据保存到HBase

我的HBase版本是:1.0.0-cdh5.6.0 我的异步HBase客户端版本是:0.9.0

该应用程序运行良好一段时间(约4或5天)但在周末期间它开始失败,但有以下异常:

org.apache.hadoop.hbase.NotServingRegionException: Region pageviews,,1463568860289.298bb29bbd148a0a62ec90885ef8d027. is not online on //some address here
        at org.apache.hadoop.hbase.regionserver.HRegionServer.getRegionByEncodedName(HRegionServer.java:2786)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.getRegion(RSRpcServices.java:922)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.mutate(RSRpcServices.java:1965)
        at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32203)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2034)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
        at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
        at java.lang.Thread.run(Thread.java:745)

我做了什么:

  • 我通过进入HBase shell并使用一些工作正常的HB + shell确认HBase确实正常运行
  • 我通过运行./hbase zkcli然后运行rmr /hbase/root-region-server登录到zookeeper shell - 我是根据以下链接执行此操作的:http://rogueleaderr.com/post/32963921889/hbase-error-region-is-not-online-root-0。这不适用于以下错误:Node does not exist: /hbase/root-region-server。我尝试解决此问题并遇到此解决方案建议:HBase: /hbase/meta-region-server node does not exist。所以我跑了:rmr /hbase/meta-region-server没有做任何事情(至少它没有写任何东西)
  • 我尝试寻找其他解决方案,有些人认为它与不兼容的HBase版本有关,听起来可能正确,但它确实工作了好几天而没有任何问题,所以我想知道究竟是什么问题

如果有人对这里的问题究竟是什么有任何想法,我会很感激。目前,我有点在黑暗中

由于

1 个答案:

答案 0 :(得分:4)

看起来像一个特定的表并且其区域已损坏(您可以如您所述从hbase shell访问其他表),请尝试hbase hbck对特定的表名称进行修复

Other Option 你可以通过增加打开区域所需的线程数来解决这个问题,这样就可以为本地索引表分配元区域,甚至还在等待删除死锁。

<property> <name>hbase.regionserver.executor.openregion.threads</name> <value>100</value> </property>