Fehler beim Starten von Apache HBase Master (HMaster) in Azure HDInsight

In diesem Artikel werden Schritte zur Problembehandlung und mögliche Lösungen für Probleme bei der Interaktion mit Azure HDInsight-Clustern beschrieben.

Szenario: Master-Start kann nicht fortfahren; befindet sich im Holding-Muster, bis die Region online ist.

Problem

HMaster kann aufgrund der folgenden Warnung nicht gestartet werden:

hbase:namespace,,<timestamp_region_create>.<encoded_region_name>.is NOT online; state={<encoded_region_name> state=OPEN, ts=<some_timestamp>, server=<server_name>}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined. 

Beispielsweise können die Parameterwerte in der tatsächlichen Meldung variieren:

hbase:namespace,,1546588612000.0000010bc582e331e3080d5913a97000. is NOT online; state={0000010bc582e331e3080d5913a97000 state=OPEN, ts=1633935993000, server=<wn fqdn>,16000,1622012792000}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.

Ursache

HMaster überprüft das Vorhandensein des WAL-Verzeichnisses auf den Regionsservern, bevor die OFFENEN (OPEN) Regionen wieder online gebracht werden. Wenn dieses Verzeichnis in diesem Fall nicht vorhanden war, wurde er nicht gestartet.

Lösung

  1. Erstellen Sie dieses Dummyverzeichnis mit dem Befehl: sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000.

  2. Starten Sie den HMaster-Dienst über die Ambari-Benutzeroberfläche neu.

Szenario: Fehler bei der atomischen Umbenennung

Problem

Beim Start wurden unerwartete Dateien erkannt.

Ursache

Im Rahmen des Startvorgangs führt HMaster verschiedene Initialisierungsschritte aus. Dabei werden unter anderem Daten aus dem Ablageordner (.tmp) in den Datenordner verschoben. HMaster untersucht zudem den Ordner mit write-ahead-Protokollen (WALs), um festzustellen, ob nicht reagierende Regionsserver vorhanden sind.

HMaster führt einen einfachen list-Befehl für die WAL-Ordner aus. Findet HMaster zu einem beliebigen Zeitpunkt eine unerwartete Datei in einem dieser Ordner, wird eine Ausnahme ausgelöst und kein Start ausgeführt.

Lösung

Überprüfen Sie die Aufrufliste und versuchen Sie festzustellen, welcher Ordner das Problem verursachen könnte (dies können beispielsweise der WAL-Ordner oder der TMP-Ordner sein). Versuchen Sie anschließend im Cloud-Explorer oder mithilfe von HDFS-Befehlen die problematische Datei zu lokalisieren. Im Allgemeinen handelt es sich dabei um eine *-renamePending.json-Datei. (Die *-renamePending.json-Datei ist eine Journaldatei, mit welcher der Vorgang der atomischen Umbenennung im WASB-Treiber implementiert wird. Aufgrund von Fehlern in dieser Implementierung können derartige Dateien nach Prozessabstürzen usw. weiterhin vorhanden sein.) Erzwingen Sie die Löschung dieser Datei im Cloud-Explorer oder durch Ausführen von HDFS-Befehlen.

Gelegentlich kann an diesem Speicherort auch eine temporäre Datei mit einem Namen wie $$$.$$$ vorhanden sein. Sie müssen den HDFS-Befehl ls verwenden, um diese Datei anzuzeigen; im Cloud-Explorer wird die Datei nicht angezeigt. Führen Sie zum Löschen dieser Datei den HDFS-Befehl hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$ aus.

Nach dem Ausführen dieser Befehle sollte HMaster sofort gestartet werden.


Szenario: Keine Serveradresse aufgelistet

Problem

Möglicherweise wird eine Meldung angezeigt, die besagt, dass die hbase: meta-Tabelle nicht online ist. Bei Ausführung von hbck wird u. U. Folgendes gemeldet: hbase: meta table replicaId 0 is not found on any region. In den HMaster-Protokollen könnte diese Meldung angezeigt werden: No server address listed in hbase: meta for region hbase: backup <region name>.

Ursache

HMaster konnte nach einem HBase-Neustart nicht initialisiert werden.

Lösung

  1. Geben Sie in der HBase-Shell die folgenden Befehle ein (ändern Sie ggf. die Istwerte):

    scan 'hbase:meta'
    delete 'hbase:meta','hbase:backup <region name>','<column name>'
    
  2. Löschen Sie den Eintrag hbase: namespace. Bei diesem Eintrag kann es sich um den gleichen Fehler handeln, der auch beim Überprüfen der Tabelle hbase: namespace gemeldet wurde.

  3. Starten Sie den aktiven HMaster von der Ambari-Benutzeroberfläche aus neu, um HBase hochzufahren.

  4. Führen Sie in der HBase-Shell den folgenden Befehl aus, um alle Tabellen hochzufahren, die offline sind:

    hbase hbck -ignorePreCheckPermission -fixAssignments
    

Szenario: „java.io.IOException: Timedout“

Problem

Für HMaster tritt ein Timeout mit einer schwerwiegenden Ausnahme wie java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned auf.

Ursache

Dieses Problem kann auftreten, wenn viele Tabellen und Regionen vorhanden sind, die beim Neustart der HMaster-Dienste nicht geleert wurden. Das Timeout ist ein bekannter HMaster-Fehler. Allgemeine Cluster-Startaufgaben können sehr lange dauern. HMaster wird heruntergefahren, wenn die Namespacetabelle noch nicht zugewiesen ist. Die langwierigen Starttasks treten auf, wenn eine große Menge an nicht geleerten Daten vorhanden und ein Zeitlimit von fünf Minuten nicht ausreichend ist.

Lösung

  1. Wechseln Sie auf der Apache Ambari-Benutzeroberfläche zu HBase>Configs. Fügen Sie in der benutzerdefinierten Datei hbase-site.xml die folgende Einstellung hinzu:

    Key: hbase.master.namespace.init.timeout Value: 2400000  
    
  2. Starten Sie die erforderlichen Dienste neu (HMaster und möglicherweise andere HBase-Dienste).


Szenario: Häufige Neustarts des Regionsservers

Problem

Knoten werden regelmäßig neu gestartet. Die Regionsserverprotokolle enthalten Einträge wie:

2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms

Ursache: ZooKeeper-Sitzungstimeout

Lange Unterbrechung der JVM-GC von regionserver. Die Pause führt dazu, dass regionserver nicht mehr reagiert und innerhalb des ZooKeeper-Sitzungstimeouts von 40 Sekunden keinen Heartbeat an HMaster senden kann. HMaster stuft regionserver als inaktiv ein, bricht regionserver ab, und führt einen Neustart aus.

Ändern Sie das ZooKeeper-Sitzungstimeout zum Abmildern. Hierzu muss nicht nur die hbase-site-Einstellung zookeeper.session.timeout, sondern auch die zoo.cfg-Einstellung maxSessionTimeout von ZooKeeper geändert werden.

  1. Navigieren Sie auf der Ambari-Benutzeroberfläche zu HBase> Konfigurationen > Einstellungen, und ändern Sie im Timeoutabschnitt den Wert des ZooKeeper-Sitzungstimeouts.

  2. Navigieren Sie in der Ambari-Benutzeroberfläche zu Zookeeper -> Konfigurationen -> Benutzerdefiniertzoo.cfg, und fügen Sie die folgende Einstellung hinzu, bzw. ändern Sie sie. Achten Sie darauf, dass der Wert mit dem HBase-Wert für zookeeper.session.timeout übereinstimmt.

    Key: maxSessionTimeout Value: 120000  
    
  3. Starten Sie die erforderlichen Dienste neu.

Ursache: überladener RegionServer

Folgen Sie der Anzahl der Regionen pro RS – Obergrenze, um die Obergrenze zu berechnen. Beispiel: 8000 (Region server Heap -- Xmx in MB) * 0.4 (hbase.regionserver.global.memstore.size) /64 (hbase.regionserver.hlog.blocksize/2) = 50

Skalieren Sie den HBase-Cluster zum Abmildern.


Szenario: Fehler bei der Protokollaufteilung

Problem

Fehler beim Starten von HMaster in einem HBase-Cluster.

Ursache

Falsch konfigurierte HDFS- und HBase-Einstellungen für ein sekundäres Speicherkonto.

Lösung

set hbase.rootdir: wasb://@.blob.core.windows.net/hbase, und starten Sie Dienste in Ambari neu.


Nächste Schritte

Wenn Ihr Problem nicht aufgeführt ist oder Sie es nicht lösen können, besuchen Sie einen der folgenden Kanäle, um weitere Unterstützung zu erhalten:

  • Nutzen Sie den Azure-Communitysupport, um Antworten von Azure-Experten zu erhalten.

  • Setzen Sie sich mit @AzureSupport in Verbindung, dem offiziellen Microsoft Azure-Konto zum Verbessern der Kundenfreundlichkeit. Verbinden der Azure-Community mit den richtigen Ressourcen: Antworten, Support und Experten.

  • Sollten Sie weitere Unterstützung benötigen, senden Sie eine Supportanfrage über das Azure-Portal. Wählen Sie dazu auf der Menüleiste die Option Support aus, oder öffnen Sie den Hub Hilfe und Support. Ausführlichere Informationen hierzu finden Sie unter Erstellen einer Azure-Supportanfrage. Zugang zu Abonnementverwaltung und Abrechnungssupport ist in Ihrem Microsoft Azure-Abonnement enthalten. Technischer Support wird über einen Azure-Supportplan bereitgestellt.