0

我刚刚从版本 0.98 升级到 HortonWorks HBase 客户端 1.1.2.2.4.2.0-258。在本地一切正常,但几分钟后在生产负载下我开始出现 TableNotFoundException:

Caused by: org.apache.hadoop.hbase.TableNotFoundException
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1264)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1162)
at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:300)
at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:152)
at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:60)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)
at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:320)
at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:295)
at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:160)
at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:155)
at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:821)

该行为似乎是随机且不可预测的,例如重复相同的请求就可以了(即不抛出异常并且成功检索数据)

我试图了解从 0.98 到 1.1 的变化,我发现的唯一重要的事情是https://issues.apache.org/jira/browse/HBASE-16973

玩弄这些价值观并没有帮助。

还有什么我应该考虑的吗?任何指针都非常感谢!

谢谢!

4

1 回答 1

0

问题在于我们如何使用 HConnection 对象,它们有几个实例(我同意,这不是使用它的正确方法,IIUC)。在新版本的 hbase 客户端中,每个 HConnection 也有几个“hconnection”线程用于元查找。所有这些累积导致 JVM 无法处理的线程数量非常多。使用单个 HConnection 实例后,问题消失了,一切都按预期工作。

于 2018-01-04T13:49:22.897 回答