HBase 因 org.apache.hadoop.hbase.NotServingRegionException 区域不在线而失败
HBase fails with org.apache.hadoop.hbase.NotServingRegionException region is not online
我有一个使用 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.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.run(RpcExecutor.java:107)
at java.lang.Thread.run(Thread.java:745)
我做了什么:
- 我通过进入 HBase shell 并使用一些工作正常的表来验证 HBase 确实在运行
- 我通过 运行
./hbase zkcli
登录了 zookeeper shell 然后 运行: rmr /hbase/root-region-server
- 我是根据这个 link:http://rogueleaderr.com/post/32963921889/hbase-error-region-is-not-online-root-0. This did not work with the following error: Node does not exist: /hbase/root-region-server
. I tried resolving this problem and encountered this solution suggestion: HBase: /hbase/meta-region-server node does not exist。所以我 运行: rmr /hbase/meta-region-server
没有做任何事情(至少它没有写任何东西)
- 我尝试寻找其他解决方案,有人建议它与不兼容的 HBase 版本有关,这听起来可能是正确的,但它确实工作了好几天没有任何问题,所以我想知道到底是什么问题
如果有人对这里的问题到底是什么有任何想法,我将不胜感激。目前我有点一头雾水
谢谢
似乎一个特定的 table 及其区域已损坏(您可以按照您的描述从 hbase shell 访问其他 tables),请尝试 hbase hbck 特定的 table 名称可能会解决此问题
Other Option :
您可以通过增加打开区域所需的线程数来解决此问题,以便可以为元区域分配甚至本地索引 table 的线程仍在等待消除死锁。
<property> <name>hbase.regionserver.executor.openregion.threads</name> <value>100</value> </property>
我有一个使用 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.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.run(RpcExecutor.java:107)
at java.lang.Thread.run(Thread.java:745)
我做了什么:
- 我通过进入 HBase shell 并使用一些工作正常的表来验证 HBase 确实在运行
- 我通过 运行
./hbase zkcli
登录了 zookeeper shell 然后 运行:rmr /hbase/root-region-server
- 我是根据这个 link:http://rogueleaderr.com/post/32963921889/hbase-error-region-is-not-online-root-0. This did not work with the following error:Node does not exist: /hbase/root-region-server
. I tried resolving this problem and encountered this solution suggestion: HBase: /hbase/meta-region-server node does not exist。所以我 运行:rmr /hbase/meta-region-server
没有做任何事情(至少它没有写任何东西) - 我尝试寻找其他解决方案,有人建议它与不兼容的 HBase 版本有关,这听起来可能是正确的,但它确实工作了好几天没有任何问题,所以我想知道到底是什么问题
如果有人对这里的问题到底是什么有任何想法,我将不胜感激。目前我有点一头雾水
谢谢
似乎一个特定的 table 及其区域已损坏(您可以按照您的描述从 hbase shell 访问其他 tables),请尝试 hbase hbck 特定的 table 名称可能会解决此问题
Other Option : 您可以通过增加打开区域所需的线程数来解决此问题,以便可以为元区域分配甚至本地索引 table 的线程仍在等待消除死锁。
<property> <name>hbase.regionserver.executor.openregion.threads</name> <value>100</value> </property>