J'utilise le mode autonome HBASE 0.94.8 dans Ubuntu. Cela fonctionne bien, je suis capable de faire toutes les opérations dans Hbase-Shell. Mais après que je me suis connecté de mon système, cela donne l'erreur suivante
15/07/28 15:10:30 ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries
15/07/28 15:10:30 WARN zookeeper.ZKUtil: hconnection-0x14ed40513350009 Unable to set watcher on znode (/hbase)
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:1041)
at org.Apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.Java:172)
at org.Apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.Java:450)
at org.Apache.hadoop.hbase.zookeeper.ZooKeeperNodeTracker.checkIfBaseNodeAvailable(ZooKeeperNodeTracker.Java:208)
at org.Apache.hadoop.hbase.zookeeper.RootRegionTracker.waitRootRegionLocation(RootRegionTracker.Java:77)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.Java:885)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.Java:998)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.Java:896)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.Java:998)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.Java:900)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.Java:857)
Oui, bien sûr, j'ai beaucoup cherché. J'ai trouvé des informations ZooKeeper existe en échec après 3 tentatives . Peut-être que cette erreur est due au fait que zookeeper est arrêté. Mais je ne sais pas comment le redémarrer. J'ai essayé de recommencer Hbase
et thrift
mais le problème persiste.
Cette commande ps axww | grep QuorumPeerMain
me donne la sortie suivante:
6162 pts/2 S+ 0:00 grep --color=auto QuorumPeerMain
Hbase commence à fonctionner si je redémarre mon système. Mais je veux une solution adéquate.
Solution temporaire
avec la commande suivante je grep ce processus de HBASE:
ps -fe grep | hbase
puis tuez tout le processus de HBASE:
kill -9 4555//assuming 4555 is process id of hbase
Puis redémarré hbase avec Sudo et Thrift et il commence à fonctionner, mais je souhaite une solution permanente. Parce que si j'utilise HBASE sur le serveur (ne signifie pas une machine locale), je ne peux pas redémarrer HBASE à chaque fois.
Issue :
Erreur: le zookeeper avec erreur Hbase existe après 3 abandons Indique clairement que le quorum du zookeeper n'est pas en cours d'exécution - la cause la plus probable peut être une incohérence avec votre paramètre zookeeper.quorum dans conf/hbase-site.xml
, le minimum doit être:
<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>
Dans la section suivante, nous expliquons succinctement pourquoi un gardien de zoo est nécessaire et comment vérifier s'il fonctionne.
Un aperçu :
Une présomption de votre texte (configuration autonome) - vous mélangez les choses. Zookeeper en mots simples gère HBase, et est une condition indispensable.
Par défaut, HBase lui-même gère la configuration de zookeeper, start-stop (bien que l'on puisse en changer) - pour vérifier dans le fichier conf/hbase-evn.sh
(dans votre répertoire hbase), il doit y avoir une ligne:
export HBASE_MANAGES_ZK=true
Indique à HBase si elle doit ou non gérer sa propre instance de Zookeeper. S'il est défini sur false
, modifiez-le pour true
.
Maintenant pour la vérification il y a une commande utile (oubliez la ps
puis grep
):
$ jps
la commande répertorie tous les processus Java (HBase est elle-même une application Java) sur la machine, c’est-à-dire que la sortie probable doit être (pour une configuration HBase autonome minimale):
62019 Jps
61098 HMaster
61233 HRegionServer
61003 HQuorumPeer
Ne tuez pas simplement le processus HBase, utilisez plutôt l'utilitaire start-stop:
$ ./bin/stop-hbase.sh
effectuez les modifications nécessaires et recommencez:
$ ./bin/start-hbase.sh
P.S. J'aurais peut-être mal interprété votre question (complètement), faites-le-moi savoir dans les commentaires que je vous recontacterai et trouvera la bonne solution - pour les visiteurs SO à venir.
Lorsque vous consultez les fichiers journaux, vous constaterez que zookeeper est incapable de se connecter avec un port. Par exemple, 543210
. Cela signifie simplement que Vous avez déjà installé Hadoop sur votre ordinateur. Hbase essaie donc de rechercher le gardien de zoo de l'installation précédente de hadoop. Veuillez renommer votre configuration hadoop existante ou supprimer complètement hadoop de votre système. (Mais notez que le gardien de zoo semble laisser les choses même après une suppression.)
Il semble que le problème ne soit pas lié à hbase
ou zookeeper
. C'est un problème de réglage du système.
J'ai le même problème après ma mise à jour Mac OS X.
Il s'est avéré que les paramètres DNS ont été modifiés par la mise à jour. J'ai vu cela dans les journaux de base:
2017-06-09 11:40:18,454 ERROR [main] master.HMasterCommandLine: Master exiting
Java.lang.RuntimeException: Failed construction of Master: class org.Apache.hadoop.hbase.master.HMasterCommandLine$LocalHMaster
at org.Apache.hadoop.hbase.util.JVMClusterUtil.createMasterThread(JVMClusterUtil.Java:143)
[SKIP]
at org.Apache.hadoop.hbase.master.HMaster.main(HMaster.Java:2432)
Caused by: Java.lang.NullPointerException
at org.Apache.hadoop.net.DNS.reverseDns(DNS.Java:92)
Après avoir supprimé les paramètres DNS dans hbase-site.xml
, le problème s'est dissipé:
<!--property>
<name>hbase.zookeeper.dns.interface</name>
<value>lo0</value>
</property>
<property>
<name>hbase.regionserver.dns.interface</name>
<value>lo0</value>
</property>
<property>
<name>hbase.master.dns.interface</name>
<value>lo0</value>
</property-->
J'ai presque la même erreur "ZooKeeper existe a échoué après 4 tentatives". 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
J'ai utilisé la même configuration de hbase-site.xml que dans le message de Nabeel Ahmed.
Si son gardien de zoo commence seulement, this devrait vous aider. J'espère que vous savez que zookeeper devrait être opérationnel avant de démarrer hbase.
Le mien travaille avec la commande Sudo
hbase/bin$Sudo ./start-habase.sh