Blogs

Interprete de zeppelin para hbase

Configurando el intérprete de zeppelin para hbase en hdp 2.4

Dentro de un proyecto de bigdata que estamos haciendo hemos usado como notebook del proyecto, zeppelin de apache. El ecosistema completo incluye ambari 2.2 y el HDP-2.4. La cuestión es que justo este intérprete parece que tiene un bug para esta versión y que no funciona correctamente. Para hacelo funcionar hemos tenido que modificar dos cosas

  • Cambiar las librerías de hbase que incluye el interprete por las de la versión de HDP-2.4
  • Añadir la siguiente variable de entorno al scritp de arranque de zeppelin HBASE_CONF_DIR apuntando a /usr/hdp/current/etc/hbase/conf

Con estos dos cambios hemos conseguido que funcione el interprete de hbase desde zeppelin. Los errores que nos pueden dar la pista de que esto es lo que está pasando en nuestro entorno son

org.apache.zeppelin.interpreter.InterpreterException: org.jruby.embed.EvalFailedException: (NameError) cannot load Java class org.apache.hadoop.hbase.quotas.ThrottleType
        at org.apache.zeppelin.interpreter.ClassloaderInterpreter.open(ClassloaderInterpreter.java:76)
        at org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java:68)
        at org.apache.zeppelin.interpreter.LazyOpenInterpreter.getProgress(LazyOpenInterpreter.java:109)

Y el siguiente

ERROR [2017-02-02 13:52:43,126] ({pool-2-thread-2} ZooKeeperWatcher.java[keeperException]:648) - hconnection-0x3f389c0f0x0, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
        at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
        at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:221)
        at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:541)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.checkIfBaseNodeAvailable(ConnectionManager.java:895)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.access$400(ConnectionManager.java:545)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStubNoRetries(ConnectionManager.java:1483)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStub(ConnectionManager.java:1524)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.makeStub(ConnectionManager.java:1553)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getKeepAliveMasterService(ConnectionManager.java:1704)
        at org.apache.hadoop.hbase.client.MasterCallable.prepare(MasterCallable.java:38)

que nos indica que la versión de hbase no es la correcta , y

ERROR [2017-02-02 13:52:43,125] ({pool-2-thread-2} RecoverableZooKeeper.java[retryOrThrow]:277) - ZooKeeper exists failed after 4 attempts
ERROR [2017-02-02 13:52:43,126] ({pool-2-thread-2} ZooKeeperWatcher.java[keeperException]:648) - hconnection-0x3f389c0f0x0, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
        at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
        at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:221)
        at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:541)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.checkIfBaseNodeAvailable(ConnectionManager.java:895)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.access$400(ConnectionManager.java:545)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStubNoRetries(ConnectionManager.java:1483)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStub(ConnectionManager.java:1524)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.makeStub(ConnectionManager.java:1553)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getKeepAliveMasterService(ConnectionManager.java:1704)
        at org.apache.hadoop.hbase.client.MasterCallable.prepare(MasterCallable.java:38)
        at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:124)
        at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:3917)
        at org.apache.hadoop.hbase.client.HBaseAdmin.listTableNames(HBaseAdmin.java:413)
        at org.apache.hadoop.hbase.client.HBaseAdmin.listTableNames(HBaseAdmin.java:407)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43

 

para detectar que la configuración no es la correcta porque no está apuntando a /hbase-unsecure en el zookeeper.

 

Con estos dos cambios y reiniciando zeppelin desde ambiar ya podemos usar %hbase desde el notebook

Espero que si a alguien le sucede lo mismo esto le pueda sevir. No he hecho más que un list desde hbase así que igual puede que más cosas estén mal configuradas.

More Blog Entries

Public urls with expiration in Alfresco Share

In the past, we published some blog posts about public shared content functionality in...

HBase format

La notación de la shell de hbase es bastante poco amigable , por un lado porque la forma de...

0 Comments