Hbase клиент ConnectionLoss для / hbase ошибка - PullRequest
11 голосов
/ 27 мая 2011

Я схожу с ума:

Установлен Hadoop / Hbase, все работает;

/opt/jdk1.6.0_24/bin/jps
23261 ThriftServer
22582 QuorumPeerMain
21969 NameNode
23500 Jps
23021 HRegionServer
22211 TaskTracker
22891 HMaster
22117 SecondaryNameNode
21779 DataNode
22370 Main
22704 JobTracker

Псевдораспределенная среда.

hbase shell

работает и выдает правильные результаты, запустив 'list' и;

hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.90.1-cdh3u0, r, Fri Mar 25 16:10:51 PDT 2011

hbase(main):001:0> status
1 servers, 0 dead, 8.0000 average load

При подключении через ruby ​​& thrift все работает нормально; мы добавляем данные, они попадают в систему, мы можем запрашивать / сканировать их. Все вроде нормально.

Однако при соединении с Java:

groovy> import org.apache.hadoop.hbase.HBaseConfiguration 
groovy> import org.apache.hadoop.hbase.client.HBaseAdmin 
groovy> conf = HBaseConfiguration.create() 
groovy> conf.set("hbase.master","127.0.0.1:60000"); 
groovy> hbase = new HBaseAdmin(conf); 

Exception thrown

org.apache.hadoop.hbase.ZooKeeperConnectionException: org.apache.hadoop.hbase.ZooKeeperConnectionException: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getZooKeeperWatcher(HConnectionManager.java:1000)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.setupZookeeperTrackers(HConnectionManager.java:303)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:294)
    at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:156)
    at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:84)

Я пытался найти причину, но на самом деле понятия не имею. Кажется, все правильно установлено.

netstat -lnp|grep 60000
tcp6       0      0 :::60000                :::*                    LISTEN      22891/java  

Хорошо выглядит.

# telnet localhost 60000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Подключается и умирает, если вы наберете что-нибудь + ввод (не уверен, что это идея, экономия на 9090 делает то же самое).

Кто-нибудь может мне помочь?

Ответы [ 4 ]

9 голосов
/ 30 мая 2011

Это ошибка Zookeeper (ZK). Клиент HBase пытается получить узел / hbase от Zookeeper и завершается неудачно.

Вы можете получить дамп ZK из главного веб-интерфейса HBase. Вы должны увидеть все соединения с ZK и выяснить, истощает ли их что-то.

Прежде чем углубляться во что-то еще, вы можете попробовать перезапустить кластер ZK и посмотреть, исправит ли это вашу проблему. (Странно, что вы видите это с одним клиентом).

HBase имеет настройку для увеличения количества подключений к ZK. Это

hbase.zookeeper.property.maxClientCnxns

В последнее время было несколько обновлений (см. Ниже), связанных с числом соединений по умолчанию (есть файл hbase-default.xml, который имеет все конфигурации по умолчанию). Вы можете переопределить это в своем файле hbase-site.xml (в разделе HBase conf dir) и увеличить его до 100 или более. Но убедитесь, что вы не маскируете реальную проблему таким образом, вы не должны видеть эту проблему с одним клиентом.

У нас была похожая ситуация, но это происходило во время тяжелых операций с заданий с уменьшением карты после обновления до HBase-0.90.

Вот пара вопросов, связанных с вашей проблемой:

Если вы все еще не можете понять это, отправьте электронное письмо в список hbase-users или присоединитесь к каналу #hbase на freenode и задайте живые вопросы.

3 голосов
/ 18 мая 2017

Это происходит, когда пользователь имеет неверное значение, определенное для "zookeeper.znode.parent" в hbase-site.xml, полученном на стороне клиента, или в случае написания пользовательского API, "zookeeper.znode.parent" был неправильно обновлено в неправильном месте. Например, по умолчанию «zookeeper.znode.parent» установлен на «/ hbase-unsecure», но если вы неправильно укажете это, как, скажем, «/ hbase» в отличие от того, что мы настроили в кластере, мы столкнемся с этим исключение при попытке подключения к кластеру HBase

3 голосов
/ 10 июня 2011

Проблема была в том, что (по какой-то причине ... я не совсем понял это) брандмауэр блокировал один из портов, необходимых для связи с Zookeeper; из командной строки это сработало, из моего приложения - нет. Однако, когда я отключил брандмауэр, все неожиданно заработало.

Спасибо за вашу помощь!

1 голос
/ 03 марта 2016

У меня была такая же проблема при подключении к моей базе данных hbase.

Оказывается, у меня был неправильный адрес машины базы данных в моей /etc/hosts.

...