it-swarm.com.de

get "ERROR: Masteradresse kann nicht von ZooKeeper abgerufen werden; znode data == null", wenn die Hbase-Shell verwendet wird

Ich habe Hadoop2.2.0 und Hbase0.98.0 installiert und hier ist was ich mache:

$ ./bin/start-hbase.sh 

$ ./bin/hbase Shell

2.0.0-p353 :001 > list

dann habe ich das bekommen:

ERROR: Can't get master address from ZooKeeper; znode data == null

Warum erhalte ich diesen Fehler? Eine andere Frage: Muss ich ./sbin/start-dfs.sh und ./sbin/start-yarn.sh ausführen, bevor ich base laufen lasse?

Wofür werden ./sbin/start-dfs.sh und ./sbin/start-yarn.sh verwendet?

Hier sind einige meiner Conf-Dokumente:

hbase-sites.xml

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://127.0.0.1:9000/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

    <property>
        <name>hbase.tmp.dir</name>
        <value>/Users/Apple/Documents/tools/hbase-tmpdir/hbase-data</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>localhost</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/Users/Apple/Documents/tools/hbase-zookeeper/zookeeper</value>
    </property>
</configuration>

core-sites.xml

<configuration>

  <property>
      <name>fs.defaultFS</name>
      <value>hdfs://localhost:9000</value>
      <description>The name of the default file system.</description>
  </property>

  <property>
      <name>hadoop.tmp.dir</name>
      <value>/Users/micmiu/tmp/hadoop</value>
      <description>A base for other temporary directories.</description>
  </property>

  <property>
      <name>io.native.lib.available</name>
      <value>false</value>
  </property>

</configuration>

garne-sites.xml

<configuration>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.Apache.hadoop.mapred.ShuffleHandler</value>
    </property>

</configuration>
12
Rickie Lau

Wenn Sie HBase nur ausführen möchten, ohne in die Zookeeper-Verwaltung für Standalone-HBase zu wechseln, entfernen Sie alle property-Blöcke aus hbase-site.xml, mit Ausnahme des Eigenschaftsblocks hbase.rootdir

Führen Sie nun /bin/start-hbase.sh aus. HBase wird mit einem eigenen Zookeeper geliefert, der mit dem Ausführen von /bin/start-hbase.sh gestartet wird. Dies ist ausreichend, wenn Sie zum ersten Mal versuchen, Dinge zu umgehen. Später können Sie Konfigurationen für den verteilten Modus für Zookeeper einrichten.

Sie müssen nur /sbin/start-dfs.sh ausführen, um HBase auszuführen, da in hbase.rootdir der Wert von hdfs://127.0.0.1:9000/hbase auf hbase-site.xml gesetzt ist. Wenn Sie es mit file:///some_location_on_local_filesystem in ein Verzeichnis im lokalen Dateisystem ändern, müssen Sie /sbin/start-dfs.sh nicht einmal ausführen. 

hdfs://127.0.0.1:9000/hbase sagt, es ist ein Ort auf HDFS und /sbin/start-dfs.sh startet namenode und datanode, was die zugrunde liegende API für den Zugriff auf das HDFS-Dateisystem bereitstellt. Weitere Informationen zu Yarn erhalten Sie unter http://hadoop.Apache.org/docs/r2.3.0/hadoop-yarn/hadoop-yarn-site/YARN.html .

13
Chandra kant

Dies kann auch passieren, wenn die VM oder der Host-Computer in den Ruhezustand versetzt wird und Zookeeper nicht aktiv bleibt. Durch einen Neustart von VM sollte das Problem gelöst werden.

5
100rabh

Sie müssen zookeeper starten und dann Hbase-Shell ausführen 

{HBASE_HOME}/bin/hbase-daemons.sh {start,stop} zookeeper

sie können diese Eigenschaft in hbase-env.sh überprüfen

# Tell HBase whether it should manage its own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=false

Siehe Quelle - Zookeeper

3
Ronak Patel

Eine schnelle Lösung könnte sein, hbase neu zu starten:

1) Stop-hbase.sh
2) Start-hbase.sh
2
Reegan Ochora

Ich hatte genau den gleichen Fehler. Die Linux-Firewall blockierte die Konnektivität. Man kann Ports über Telnet testen. Eine schnelle Lösung besteht darin, die Firewall auszuschalten und zu überprüfen, ob sie behoben wird:

Deaktivieren Sie die Firewall auf allen Knoten vollständig. Hinweis: Dieser Befehl übersteht keinen Neustart Ihrer Computer.

systemctl stop firewalld

Ein langfristiger Fix besteht darin, dass Sie die Firewall konfigurieren müssen, um die hbase-Ports zuzulassen.

Beachten Sie, dass Ihre Version von hbase verschiedene Ports verwendet: https://issues.Apache.org/jira/browse/HBASE-10123

1
Chris

Die Ausgabe von Hbase Shell ist ziemlich hoch, so dass viele Fehlkonfigurationen diese Nachricht verursachen würden. Um sich beim Debuggen zu helfen, wäre es viel besser, das hbase-Login einzusehen 

/var/log/hbase 

um die Ursache des Problems herauszufinden. 

Ich hatte auch das gleiche Problem. Für mich lag meine Ursache darin, dass hadoop-kms eine widersprüchliche Portnummer zu meinem hbase-master hatten. Beide verwenden Port 16000, so dass mein HMaster beim Aufruf von hbase Shell noch nicht einmal gestartet wurde. Nachdem ich das behoben hatte, funktionierte meine Datenbank. 

Auch hier kann es sein, dass kms Hafenkonflikt nicht Ihre Hauptursache ist. Schlagen Sie nachdrücklich vor, in/var/log/hbase nach der Ursache zu suchen.

0
YufengJ

In meinem Fall mit dem gleichen Fehler bei der Ausführung von hbase - Ich habe die zookeeper -Eigenschaften nicht in die Datei hbase-site.xml aufgenommen und erhalte trotzdem die obigen Fehlermeldungen (aufgrund des Apache hbase-Handbuchs sind nur die beiden Eigenschaften rootverzeichnis und verteilt wichtig ).

Ich kann auch meine Ausgabe des Befehls jps zurückverfolgen, um herauszufinden, dass mein Hregion-Server und der Hmaster tatsächlich nicht ordnungsgemäß ausgeführt wurden. 

Nach Stop und Start (wie ein Reset) hatte ich diese beiden laufen und kann hbase korrekt ausführen.

0
r poon

wenn es in VMWare oder der virtuellen Box passiert, starten Sie Cloudera bitte mit dem Befehl init1bitte überprüfen Sie, ob Sie über Root-Rechte verfügen und versuchen Sie es erneut. Ich hoffe, es hilft :)

hbase Shell

0