Cliente de Hbase ConnectionLoss para error de / hbase

Me estoy volviendo completamente loco

Instalado Hadoop / Hbase, todo se está ejecutando;

/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 

Pseudo entorno distribuido.

shell hbase

está trabajando y viene con resultados correctos ejecutando ‘lista’ y;

 hbase shell HBase Shell; enter 'help' for list of supported commands. Type "exit" 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 

Cuando se conecta a través de ruby ​​y thrift, todo funciona bien; Estamos agregando datos, está ingresando en el sistema, podemos consultarlos / escanearlos. Todo parece estar bien.

Sin embargo, al conectar con 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.(HConnectionManager.java:294) at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:156) at org.apache.hadoop.hbase.client.HBaseAdmin.(HBaseAdmin.java:84) 

He estado tratando de encontrar la causa, pero realmente no tengo ni idea. Todo parece estar correctamente instalado.

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

Se ve bien también.

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

Se conecta y muere si escribe algo + ingresar (no estoy seguro de si esa es la idea, el ahorro en 9090 hace lo mismo).

¿Alguien puede ayudarme?

Charles,

Este es un error de Zookeeper (ZK). El cliente HBase intenta obtener el nodo / hbase de Zookeeper y falla.

Puede obtener un volcado ZK desde la interfaz web maestra de HBase. Debería ver todas las conexiones a ZK y averiguar si algo las está agotando.

Antes de sumergirse en cualquier otra cosa, puede intentar reiniciar su clúster ZK y ver si soluciona su problema. (Es extraño que lo veas con un solo cliente).

HBase tiene una configuración para boost el número de conexiones a ZK. Sus

 hbase.zookeeper.property.maxClientCnxns 

Últimamente hubo algunas actualizaciones (ver más abajo) relacionadas con el número predeterminado de conexiones (hay un archivo hbase-default.xml que tiene todas las configuraciones predeterminadas). Puede anular esto en su archivo hbase-site.xml (bajo HBase conf dir) y elevarlo a 100 o más. Pero asegúrese de no estar ocultando el problema real de esta manera, no debería ver este problema con un solo cliente.

Hemos tenido una situación similar, pero sucedió durante operaciones pesadas de trabajos de reducción de mapas, después de actualizar a HBase-0.90.

Aquí hay un par de cuestiones relacionadas con su problema:

Si aún no puede resolverlo, envíe un correo electrónico a la lista de usuarios de hbase o únase al canal #hbase en freenode y haga preguntas en vivo.

El problema era en realidad que (por alguna razón … realmente no lo entiendo en detalle) el firewall estaba bloqueando uno de los puertos necesarios para hablar con Zookeeper; desde la línea de comandos funcionó, desde mi aplicación no funcionó. Sin embargo, cuando deshabilité el firewall todo funcionó bien de repente.

¡Gracias por tu ayuda!

Esto sucede cuando el usuario tiene un valor incorrecto definido para “zookeeper.znode.parent” en el archivo hbase-site.xml del lado del cliente o en el caso de una API personalizada escrita, el “zookeeper.znode.parent” se actualizó incorrectamente un lugar equivocado Por ejemplo, el valor predeterminado “zookeeper.znode.parent” se establece en “/ hbase-unsecure”, pero si especifica incorrectamente que digamos “/ hbase” en lugar de lo que hemos configurado en el clúster, nos encontraremos con esto excepción al intentar conectarse al clúster HBase

Tuve el mismo problema de conexión a mi base de datos db.

Resulta que tenía una mala dirección de la máquina de base de datos en mi /etc/hosts .