web-dev-qa-db-fra.com

Echec de la connexion de HBase standalone (échec de la création de la table)

J'essaie de déployer Hbase en mode autonome après cet article: http://hbase.Apache.org/book.html#quickstart . La version est la 0.92.1-cdh4.1.2

Mais je reçois ces erreurs lorsque j'essaie de créer une table:

Message d'erreur:

    13/04/01 14:07:10 ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries
13/04/01 14:07:10 WARN zookeeper.ZKUtil: hconnection Unable to set watcher on znode /hbase/master
org.Apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master
    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:1021)
    at org.Apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.Java:154)
    at org.Apache.hadoop.hbase.zookeeper.ZKUtil.watchAndCheckExists(ZKUtil.Java:226)
    at org.Apache.hadoop.hbase.zookeeper.ZooKeeperNodeTracker.start(ZooKeeperNodeTracker.Java:82)
    at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.setupZookeeperTrackers(HConnectionManager.Java:580)
    at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.Java:569)

Journal de sortie:

13/04/01 14:06:39 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=localhost:2181 sessionTimeout=180000 watcher=hconnection
13/04/01 14:06:39 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is 10231@localhost
13/04/01 14:06:39 INFO zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (Unable to locate a login configuration)
13/04/01 14:06:39 WARN zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
Java.net.ConnectException: Connection refused
        at Sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at Sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.Java:599)
        at org.Apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.Java:350)
        at org.Apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.Java:1068)
13/04/01 14:06:39 WARN zookeeper.RecoverableZooKeeper: Possibly transient ZooKeeper exception: org.Apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid

Mes configurations:

  1. Ajout de Java_HOME dans hbase-env.sh
  2. hbase_site.xml

    <name>hbase.rootdir</name>
    
    <value>file:///home/hadoop/data</value>
    

    <name>hbase.zookeeper.property.dataDir</name>
    
    <value>file:///home/hadoop/zookeeper</value>
    

J'ai essayé de modifier/etc/hosts, ce qui ressemble à ceci (Oracle est le nom d'hôte):

127.0.0.1   localhost Oracle

ou 

[server ip]   localhost Oracle

Mais ceux-ci ne fonctionnent pas pour moi.

Mes codes exacts sont:

[usr@Oracle bin]$ ./start-hbase.sh 
starting master, logging to /home/hadoop/hbase-0.94.6/bin/../logs/hbase-usr-master-Oracle.out
[usr@Oracle bin]$ hbase Shell
13/04/01 14:57:55 WARN conf.Configuration: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.92.1-cdh4.1.2, rUnknown, Thu Nov  1 18:02:07 PDT 2012

hbase(main):001:0> create 'test','cf'

Merci d'avance!

20
Hypnos

Il semble que vous manquiez de hbase.zookeeper.quorum dans votre configuration .Veuillez consulter ce chapitre du guide HBase, cela pourrait aider: http://hbase.Apache.org/book/zookeeper.html

Vérifiez également que zookeeper est démarré sur le bon port et (ce qui se produit le plus souvent) avec les interfaces IP correctes.

7

Je ne sais pas si vous êtes sur Mac, mais j'ai également eu ce problème. Il s’avère que c’est parce qu’un fichier .DS_STORE se trouvait dans un dossier du serveur -ROOT- region et était à l’origine d’une exception de connexion. Très étrange!

3
John61590

Quelque chose pourrait être lié à votre configuration. Au début, je télécharge HBase tar ( http://hbase.Apache.org/book/quickstart.html ) pour exécuter HBase. Je n'ai pas suivi le lien pour faire une configuration, il suffit de télécharger, de démarrer HBase, d'exécuter "HBase Shell". Mais lors de la création d'une table, cela m'a donné une erreur comme celle que vous avez mentionnée. Et puis, je recherche l’installation de HBase sur Mac, puisque j’utilise Mac. J'adopte utiliser "brasser installer hbase" pour installer HBase ( http://chase-seibert.github.io/blog/2013/02/01/getting-starting-with-hbase-and-pig.html ). Une fois l'installation terminée, je recrée la table. Succès.

Alors, réfléchissez à nouveau à votre erreur, elle doit être liée à votre Java_HOME ou à d’autres configurations sur HBase. Trouver la réponse de cette façon pourrait vous aider.

2
Haimei

Dans HBase 1.2.3, j'ai presque la même erreur "ZooKeeper existe après 4 tentatives" en mode autonome. Cela a été causé par l'exécution de ./start-hbase.sh sans avoir l'autorisation de se connecter au port 2181. La solution s'est avérée très simple:

Sudo ./start-hbase.sh

Juste au cas où, la configuration de hbase-site.xml est la suivante:

<configuration>
   <property>
      <name>hbase.rootdir</name>
      <value>file:///home/hadoop/HBase/HFiles</value>
   </property>
   <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/home/hadoop/zookeeper</value>
   </property>
</configuration>
2
APW

arrêtez la base de hbase en arrêtant l’hôte.sh dans le dossier zookeeper et videz son contenu. puis redémarrez hbase et hbase Shell. qui a résolu le problème pour moi

1
Roshan V Jose

Il semble y avoir une erreur dans hbase-site.xml conf. Selon le quickstart document , HBase hbase-site.xml devrait ressembler à ceci:

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///home/testuser/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/testuser/zookeeper</value>
  </property>
</configuration>

Et il n'y a pas de file:// dans la configuration de Zookeeper. Et prenez garde lorsque vous n’avez pas réussi à démarrer HBase, vous devez supprimer les fichiers que vous stockez hbase et zookeeper. Selon la configuration ci-dessus, vous devez supprimer tous les fichiers sous /home/testuser/hbase et /home/testuser/zookeeper. Et essayez de vérifier les informations d'erreur de journal. J'ai corrigé cette erreur quand j'ai le droit conf et ajouter la variable Java_HOME dans hbase-env.sh.

1
einverne

J'ai également rencontré ce problème lors de la configuration de hbase. Quelques minutes plus tard, je pensais avoir oublié de démarrer hbase en lançant la commande suivante:

hbase-1.1.2/bin/start-hbase.sh

Après avoir exécuté cette commande, hbase Shell a très bien fonctionné.

1
texens

Moi aussi, j'avais le même problème. Définissez correctement le propriétaire et le groupe dans les deux dossiers.

Sudo chown -R hadoop_user:hadoop_user_group home/hadoop/data
Sudo chmod -R 755 home/hadoop/data
0
Saurabh

L'erreur "ERREUR zookeeper.RecoverableZooKeeper: ZooKeeper existe après trois tentatives}" indique très probablement que vous n'avez pas zookeeper en cours d'exécution - Avant de regarder le shell HBase, vous pouvez vérifier si le quorum de Zookeeper est actif, en utilisant

$ jps

la commande répertorie tous les processus Java sur la machine, c'est-à-dire que la sortie probable doit être - pour la configuration autonome HBase que vous essayez de configurer (ignorez les nombres dans la colonne de gauche, p.ex.):

62019 Jps
61098 HMaster        
61233 HRegionServer     
61003 HQuorumPeer

Si votre sortie n'a pas la HQuorumPeer - indique que le gardien de zoo n'est pas en cours d'exécution. 

Zookeeper est requis pour le cluster HBase - car il le gère.


Solution:

Dans votre répertoire HBase, commencez par arrêter HBase:

$ ./bin/stop-hbase.sh

Si vous essayez de travailler sur l'exemple 'autonome HBase' - respectez la configuration minimale fournie dans l'exemple:

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///home/adio/workspace/hadoop/hbase/directories/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/adio/workspace/hadoop/hbase/directories/zookeeper</value>
  </property>
</configuration>

c'est-à-dire que votre conf/hbase-site.xml devrait avoir le contenu ci-dessus.

Une fois défini, démarrez à nouveau HBase:

$ ./bin/start-hbase.sh

_ {P.S.} _ si le problème n'a toujours pas été résolu si vous suivez ces étapes, laissez votre problème dans la section commentaire.


Peu de réponses pertinentes: 123

0
Nabeel Ahmed

Le problème réside dans 'hbase-site.xml' sous la propriété 'hbase.zookeeper.property.dataDir'

  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/lib/hbase/zookeeperdata</value>
  </property>

Remarque: Sous cette propriété, définissez le chemin dans le système de fichiers 'LOCAL'.

Il suffit de spécifier le répertoire sur le système de fichiers local où HBase et ZooKeeper écrivent des données . Par exemple, dans ce cas, après l'exécution de 1) start-hbase.sh 2) Commande hbase Shell

Accédez au chemin (dans mon cas,/usr/lib/hbase/zookeeperdata), où vous verrez un fichier nommé myid.

Résumer les points de validation

1) Pour exécuter jps, les processus suivants doivent être exécutés HQuorumPeer, ResourceManager, HMaster, NameNode, Main, HRegionServer, SecondaryNameNode, DataNode, Jps, NodeManager

2) Sous hbase-site.xml, pour la propriété 'hbase.zookeeper.property.dataDir', le chemin doit être défini sur chemin local, c’est-à-dire que le dossier doit être présent localement.

3) Après avoir exécuté les commandes start-hbase.sh et hbase Shell -> Navigation dans le chemin spécifié dans hbase.zookeeper.property.dataDir (DANS mon exemple, le chemin est/usr/lib/hbase/zookeeperdata), un fichier nommé myid. devrait être présent.

0
KP Fingh

Editez le fichier/etc/hosts ... Dans la deuxième ligne, changez 127.0.1.1 en 127.0.0.1 puis démarrez Hbase ... cela devrait fonctionner normalement . Si cela ne fonctionne pas ... essayez les étapes sur ce lien http://lets-do-something-big.blogspot.in/2014/01/hbase-installation-on-ubuntu-lubuntu.html

0
Harry