Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Um Ihnen optimale Verfügbarkeitsstufen für Ihre Analysekomponenten zu bieten, wurde HDInsight mit einer einzigartigen Architektur entwickelt, um hohe Verfügbarkeit (HA) kritischer Dienste sicherzustellen. Microsoft hat einige Komponenten dieser Architektur entwickelt, um ein automatisches Failover bereitzustellen. Andere Komponenten sind Standard-Apache-Komponenten, die zur Unterstützung bestimmter Dienste bereitgestellt werden. In diesem Artikel wird die Architektur des HA-Dienstmodells in HDInsight erläutert, wie HDInsight Failover für HA-Dienste unterstützt, und bewährte Methoden zum Wiederherstellen von anderen Dienstunterbrechungen.
Hinweis
Dieser Artikel enthält Verweise auf den Begriff Slave, einen Begriff, den Microsoft nicht mehr verwendet. Sobald der Begriff aus der Software entfernt wurde, wird er auch aus diesem Artikel entfernt.
Infrastruktur für hohe Verfügbarkeit
HDInsight bietet eine angepasste Infrastruktur, um sicherzustellen, dass vier primäre Dienste mit automatischen Failoverfunktionen hoch verfügbar sind:
- Apache Ambari Server
- Applikations-Zeitachsenserver für Apache YARN
- Auftragsverlaufsserver für Hadoop MapReduce
- Apache Livy
Diese Infrastruktur besteht aus vielen Diensten und Softwarekomponenten, von denen einige von Microsoft entworfen wurden. Die folgenden Komponenten sind für die HDInsight-Plattform einzigartig:
- Untergeordneter Failovercontroller (sekundär)
- Übergeordneter Failovercontroller (Master)
- Slave-Hochverfügbarkeitsdienst
- Master-Dienst für hohe Verfügbarkeit
Es gibt auch andere Hochverfügbarkeitsdienste, die von Open-Source-Apache-Zuverlässigkeitskomponenten unterstützt werden. Diese Komponenten sind auch auf HDInsight-Clustern vorhanden:
- Hadoop File System (HDFS) NameNode
- YARN Ressourcenmanager
- HBase Master
In den folgenden Abschnitten erfahren Sie mehr darüber, wie diese Dienste zusammenarbeiten.
HDInsight Hochverfügbarkeitsdienste
Microsoft bietet Unterstützung für die vier Apache-Dienste in der folgenden Tabelle in HDInsight-Clustern. Um sie von Hochverfügbarkeitsdiensten zu unterscheiden, die von Komponenten von Apache unterstützt werden, werden sie als HDInsight HA-Dienste bezeichnet.
| Service | Clusterknoten | Clustertypen | Purpose |
|---|---|---|---|
| Apache Ambari Server | Aktive Kopfnode | All | Überwacht und verwaltet den Cluster. |
| Application Timeline Server für Apache YARN | Aktive Kopfnode | Alle außer Kafka | Verwaltet Debuginformationen zu YARN-Aufträgen, die auf dem Cluster ausgeführt werden. |
| Auftragsverlaufsserver für Hadoop MapReduce | Aktive Kopfnode | Alle außer Kafka | Verwaltet Debuggingdaten für MapReduce-Aufträge. |
| Apache Livy | Aktive Kopfnode | Spark | Ermöglicht eine einfache Interaktion mit einem Spark-Cluster über eine REST-Schnittstelle |
Hinweis
HDInsight Enterprise Security Package (ESP)-Cluster bieten derzeit nur die hohe Verfügbarkeit des Ambari-Servers. Anwendungszeitachsenserver, Auftragsverlaufsserver und Livy werden alle nur auf Headnode0 ausgeführt, und bei einem Failover von Ambari erfolgt kein Failover auf Headnode1. Die Anwendungszeitachsendatenbank befindet sich auch auf Headnode0 und nicht auf ambari SQL Server.
Architektur
Jeder HDInsight-Cluster verfügt über zwei Headnodes im aktiven modus bzw. standbymodus. Die HDInsight HA-Dienste werden nur auf Headnodes ausgeführt. Diese Dienste sollten immer auf dem aktiven Headnode ausgeführt und auf dem Standby-Headnode gestoppt und in den Wartungsmodus versetzt werden.
Um die richtigen Zustände von HA-Diensten aufrechtzuerhalten und ein schnelles Failover bereitzustellen, nutzt HDInsight Apache ZooKeeper, der ein Koordinationsdienst für verteilte Anwendungen ist, um aktive Headnode-Wahlen durchzuführen. HDInsight stellt auch einige Hintergrund-Java-Prozesse bereit, die das Failoververfahren für HDInsight HA-Dienste koordinieren. Dabei handelt es sich um die folgenden Dienste: den übergeordneten (primären) Failovercontroller, den untergeordneten (sekundären) Failovercontroller, den master-ha-service und den slave-ha-service.
Apache ZooKeeper
Apache ZooKeeper ist ein leistungsstarker Koordinationsdienst für verteilte Anwendungen. In der Produktion wird ZooKeeper in der Regel im replizierten Modus ausgeführt, in dem eine replizierte Gruppe von ZooKeeper-Server ein Quorum bildet. Jeder HDInsight-Cluster verfügt über drei ZooKeeper-Knoten, mit denen drei ZooKeeper-Server ein Quorum bilden können. HDInsight verfügt über zwei ZooKeeper-Quorums, die parallel zueinander betrieben werden. Ein Quorum entscheidet den aktiven Headnode in einem Cluster, auf dem HDInsight HA-Dienste ausgeführt werden sollen. Ein weiteres Quorum wird verwendet, um HA-Dienste zu koordinieren, die von Apache bereitgestellt werden, wie in späteren Abschnitten beschrieben.
Untergeordneter Failovercontroller (sekundär)
Der Slave-Failovercontroller wird auf jedem Knoten in einem HDInsight-Cluster ausgeführt. Dieser Controller ist für den Start des Ambari-Agents und des Slave-ha-Dienstes auf jedem Knoten verantwortlich. Er fragt in regelmäßigen Abständen den aktiven Hauptknoten beim ersten ZooKeeper-Quorum ab. Wenn sich die aktiven und Standbyhauptknoten ändern, führt der untergeordnete Failovercontroller folgende Schritte aus:
- Aktualisiert die Hostkonfigurationsdatei.
- Startet den Ambari-Agent neu.
Der Slave-ha-Service ist für das Beenden der HDInsight HA-Dienste (mit Ausnahme des Ambari-Servers) auf dem Standby-Headnode verantwortlich.
Übergeordneter Failovercontroller (Master)
Auf beiden Hauptknoten wird ein übergeordneter Failovercontroller ausgeführt. Beide übergeordneten Failovercontroller kommunizieren mit dem ersten ZooKeeper-Quorum, um den Hauptknoten, auf dem Sie ausgeführt werden, als aktiven Hauptknoten zu nominieren.
Wenn beispielsweise der Master-Failovercontroller auf Headnode 0 die Wahl gewinnt, werden die folgenden Änderungen vorgenommen:
- Headnode 0 wird aktiv.
- Der Hauptfailovercontroller startet den Ambari-Server und den Master-ha-Dienst auf Headnode 0.
- Der andere Master-Failovercontroller stoppt den Ambari-Server und den Master-ha-Dienst auf Headnode 1.
Der Master-ha-Service wird nur auf dem aktiven Headnode ausgeführt, beendet die HDInsight HA-Dienste (mit Ausnahme des Ambari-Servers) im Standby-Headnode und startet sie auf aktivem Headnode.
Der Failoverprozess
Auf jedem Hauptknoten wird zusammen mit dem übergeordneten Failovercontroller ein Integritätsmonitor ausgeführt, der Heartbeatbenachrichtigungen an das Zookeeper-Quorum sendet. Der Headnode gilt in diesem Szenario als HA-Dienst. Der Integritätsmonitor überprüft, ob jeder Hochverfügbarkeitsdienst fehlerfrei und bereit ist, an der Auswahl der übergeordneten Instanz teilzunehmen. Wenn ja, tritt dieser Leitknoten zur Wahl an. Wenn nicht, wird die Auswahl beendet, bis der Knoten wieder bereit ist.
Wenn der Standby-Headnode jemals die Führung übernimmt und aktiv wird (zum Beispiel im Falle eines Fehlers des vorherigen aktiven Knotens), startet der Master-Failovercontroller alle HDInsight HA-Dienste auf diesem. Der Master-Failovercontroller stoppt diese Dienste auf dem anderen Headnode.
Bei HDInsight HA-Dienstfehlern, z. B. einem Dienst, der ausgefallen ist oder nicht einwandfrei ist, sollte der Master-Failovercontroller die Dienste entsprechend dem Headnode-Status automatisch neu starten oder beenden. Benutzer sollten HDInsight HA-Dienste nicht manuell auf beiden Head-Knoten starten. Lassen Sie stattdessen das automatische oder manuelle Failover zu, damit der Dienst wiederhergestellt werden kann.
Versehentlicher manueller Eingriff
HDInsight HA-Dienste sollten nur auf dem aktiven Headnode ausgeführt werden und bei Bedarf automatisch neu gestartet werden. Da einzelne HA-Dienste nicht über einen eigenen Gesundheitsmonitor verfügen, kann ein Failover nicht auf der Ebene des einzelnen Dienstes ausgelöst werden. Die Sicherstellung des Failovers erfolgt auf Knotenebene, nicht auf Dienstebene.
Einige bekannte Probleme
Wenn Sie einen HA-Dienst manuell auf dem Standby-Headnode starten, wird er erst beendet, wenn das nächste Failover stattfindet. Wenn HA-Dienste auf beiden Headnodes ausgeführt werden, besteht das Risiko einiger Probleme: Auf die Ambari-Benutzeroberfläche kann nicht zugegriffen werden, Ambari zeigt Fehler an, und YARN-, Spark- sowie Oozie-Aufträge könnten hängen bleiben.
Wenn ein HA-Dienst auf dem aktiven Headnode beendet wird, startet er nicht neu, bis entweder der nächste Failover eintritt oder der Master-Failover-Controller/master-ha-Service neu gestartet wird. Wenn ein oder mehrere HA-Dienste auf dem aktiven Headnode stoppen, insbesondere wenn der Ambari-Server stoppt, ist die Ambari-Benutzeroberfläche nicht zugänglich; andere potenzielle Probleme umfassen das Scheitern von YARN-, Spark- und Oozie-Aufträgen.
Apache Hochverfügbarkeitsdienste
Apache bietet hohe Verfügbarkeit für HDFS NameNode, YARN ResourceManager und HBase Master, die auch in HDInsight-Clustern verfügbar sind. Im Gegensatz zu HDInsight HA-Diensten werden sie in ESP-Clustern unterstützt. Apache HA-Dienste kommunizieren mit dem zweiten ZooKeeper-Quorum (im obigen Abschnitt beschrieben), um aktive/Standby-Zustände zu wählen und automatisches Failover durchzuführen. In den folgenden Abschnitten wird beschrieben, wie diese Dienste funktionieren.
Hadoop Verteiltes Dateisystem (HDFS) NameNode
HDInsight-Cluster, die auf Apache Hadoop 2.0 oder höher basieren, stellen eine hohe Verfügbarkeit von NameNode bereit. Es gibt zwei NameNodes, die auf den Headnodes ausgeführt werden, die für automatisches Failover konfiguriert sind. Die NameNodes verwenden den ZKFailoverController , um mit Zookeeper zu kommunizieren, um den Aktiven-/Standby-Status zu bestimmen. Der ZKFailoverController wird auf beiden Headnodes ausgeführt und funktioniert auf die gleiche Weise wie der Masterfailovercontroller.
Das zweite Zookeeper-Quorum ist unabhängig vom ersten Quorum, sodass der aktive NameNode möglicherweise nicht auf dem aktiven Headnode ausgeführt wird. Wenn der aktive NameNode tot oder ungesund ist, gewinnt der StandbynameNode die Wahl und wird aktiv.
YARN Ressourcenmanager
HDInsight-Cluster, die auf Apache Hadoop 2.4 oder höher basieren, unterstützen hohe Verfügbarkeit des YARN ResourceManagers. Es gibt zwei ResourceManagers, rm1 und rm2, die auf Headnode 0 bzw. headnode 1 ausgeführt werden. Wie NameNode ist YARN ResourceManager auch für automatisches Failover konfiguriert. Ein anderer ResourceManager wird automatisch ausgewählt, um aktiv zu sein, wenn der aktuelle aktive ResourceManager abläuft oder nicht reagiert.
YARN ResourceManager verwendet seinen eingebetteten ActiveStandbyElector als Fehlerdetektor und Leaderwähler. Im Gegensatz zu HDFS NameNode benötigt YARN ResourceManager keinen separaten ZKFC-Daemon. Der aktive ResourceManager schreibt seine Zustände in den Apache Zookeeper.
Die hohe Verfügbarkeit des YARN ResourceManager ist unabhängig von NameNode und anderen HDInsight HA-Diensten. Der aktive ResourceManager kann nicht auf dem aktiven Headnode oder dem Headnode ausgeführt werden, in dem der aktive NameNode ausgeführt wird. Weitere Informationen zur hohen Verfügbarkeit von YARN ResourceManager finden Sie unter ResourceManager High Availability.
HBase Master
HDInsight HBase-Cluster unterstützen HBase Master-Hochverfügbarkeit. Im Gegensatz zu anderen HA-Diensten, die auf Headnodes ausgeführt werden, werden HBase Masters auf den drei Zookeeper-Knoten ausgeführt, wobei einer davon der aktive Master und die anderen beiden standby sind. Wie NameNode koordiniert hBase Master mit Apache Zookeeper für die Wahl von Leadern und führt automatisches Failover durch, wenn der aktuelle aktive Master Probleme hat. Es gibt jeweils nur einen aktiven HBase Master.