2015-10-23 23 views
13

Hadoop definitive Führer sagen -Wie funktioniert der Hadoop-Namenode-Failover-Prozess?

Jedes NameNode läuft einen leichter Failover-Controller Prozess, deren Aufgabe es ist, seine NameNode für Ausfälle zu überwachen (einen einfachen Herzschlag-Mechanismus) und löst einen Failover soll eine Namenscode fehlgeschlagen.

Wie kann ein namenode etwas ausführen, um seinen eigenen Fehler zu erkennen?

Wer sendet Herzschlag an wen?

Wo wird dieser Prozess ausgeführt?

Wie erkennt es Namenknotenfehler?

An wen es den Übergang melden?

Antwort

27

Von Apache docs

Die ZKFailoverController (ZKFC) ist eine neue Komponente, die ein ZooKeeper-Client, der auch überwacht und verwaltet den Zustand des NameNode. Jede der Maschinen, die betreibt eine NameNode betreibt auch ein ZKFC, und dass ZKFC ist verantwortlich für:

Health Monitoring - die ZKFC Pings seine lokale NameNode in regelmäßigen Abständen mit ein Health-Check-Befehl. Solange der NameNode rechtzeitig mit einem fehlerfreien Status antwortet, betrachtet der ZKFC den Knoten als fehlerfrei. Wenn der Knoten abgestürzt, eingefroren oder auf andere Weise in einen fehlerhaften Zustand versetzt wurde, wird er vom Gesundheitsmonitor als fehlerhaft gekennzeichnet.

ZooKeeper Sitzungsmanagement - wenn die lokalen NameNode gesund sind, der ZKFC hält eine Sitzung offen in ZooKeeper. Wenn der lokale NameNode aktiv ist, hält er auch einen speziellen "lock" znode. Diese Sperre verwendet die Unterstützung von ZooKeeper für "ephemere" Knoten; Wenn die Sitzung abläuft, wird der Sperrknoten automatisch gelöscht.

ZooKeeper-basierte Wahl - wenn die lokale NameNode gesund ist, und die ZKFC sieht, dass kein anderer Knoten zur Zeit das Schloss ZNODE hält, wird es selbst versuchen, das Schloss zu erwerben. Wenn es gelingt, dann hat es "gewann die Wahl", und ist verantwortlich für das Ausführen eines Failovers, um seine lokale NameNode aktiv zu machen.

Werfen Sie einen Blick auf diese Apache PDF die

Slide

Teil HDFS-2185 JIRA Ausgabe 16 von

http://www.slideshare.net/cloudera/hdfs-update-lipcon-federal-big-data-apache-hadoop-forum

enter image description here:

Automatische NameNode Failover-Prozess in Hadoop:

In einem typischen HA-Cluster werden zwei separate Computer als NameNodes konfiguriert. Zu jedem Zeitpunkt befindet sich genau einer der NameNodes in einem aktiven Zustand und der andere befindet sich in einem Standby-Zustand. Der aktive NameNode ist für alle Clientvorgänge im Cluster zuständig, während der Standby-Modus lediglich als Slave fungiert und genügend Status beibehält, um bei Bedarf ein schnelles Failover zu ermöglichen.

Damit der Standby NameNode seinen Zustand mit dem Active NameNode synchronisiert zu halten, kommunizieren beide Knoten mit einer Gruppe von separaten Daemons JournalNodes (Jns) genannt.

Wenn eine Namespace-Änderung vom Active-Knoten ausgeführt wird, protokolliert er dauerhaft einen Datensatz der Änderung an der Mehrzahl dieser JNs. Der Standby-Knoten liest diese Änderungen von den JNs und wendet sie auf seinen eigenen Namensraum an.

Im Falle eines Failovers stellt der Standby-Betrieb sicher, dass er alle Änderungen von den JounalNodes gelesen hat, bevor er sich selbst in den Status "Aktiv" versetzt. Dadurch wird sichergestellt, dass der Namespacestatus vollständig synchronisiert ist, bevor ein Failover auftritt.

Für einen HA-Cluster ist es unbedingt erforderlich, dass nur einer der NameNodes gleichzeitig aktiv ist. ZooKeeper wurde verwendet, um Split-Brain-Szenarien zu vermeiden, sodass der Status des Namensknotens aufgrund von Failover nicht divergiert.

Folie 8 aus: http://www.slideshare.net/cloudera/hdfs-futures-world2012-widescreen

enter image description here:

In Zusammenfassung:Namen Knoten ist Daemon & Failover-Controller ein Daemon ist. Wenn der Name Node Daemon fehlschlägt, erkennt der Failover-Controller-Daemon und ergreift Korrekturmaßnahmen. Selbst wenn die gesamte Maschine abstürzt, ZooKeeper Server erkennt es und Sperre wird abgelaufen sein und andere Standby-Name Knoten wird als aktiver Name Knoten gewählt werden.

+0

Awsome! Vielen Dank. Ich denke, Buchtext ist nicht richtig, wollte es zu convay Jeder namenode ** (Maschine) ** führt einen leichten Failover-Controller-Prozess, dessen Aufgabe es ist, seinen namenode ** (Daemon) ** für Fehler zu überwachen – K246

+0

Ich schlage vor, Ihre zu bearbeiten Frage zu generischer wie: Wie Hadoop Name Knoten Failover-Prozess funktioniert? –