TableNotFoundException при обновлении клиента hbase с 0,98 до 1,1
Я только что перешел на HortonWorks HBase клиент 1.1.2.2.4.2.0-258 с версии 0.98. Все отлично работает локально, но через пару минут под рабочей нагрузкой у меня начинает появляться 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
Игра с этими ценностями не помогла.
Что-нибудь еще, что я должен принять во внимание? Любые указатели высоко ценятся!
Спасибо!
1 ответ
Проблема заключалась в том, как мы использовали объект HConnection, их было несколько экземпляров (что, я согласен, неправильный способ его использования, IIUC). В новой версии клиента hbase также есть несколько потоков "hconnection" для мета-поиска на HConnection. Все это накапливалось, приводя к чрезвычайно большому количеству потоков, которые JVM не могла обработать. После использования одного экземпляра HConnection проблема исчезла, и все работает как положено.