Inhaltsverzeichnis:
- NameNode Start und Vorgang
- Schreiben von Daten
- Daten lesen
- Daten im Hadoop-Cluster ausgleichen
- NameNode-Master-Server-Design
Video: hadoop yarn architecture 2024
unterteilt. Der NameNode fungiert als Adressbuch für Hadoop Distributed File System (HDFS), da er nicht weiß, nur welche Blöcke bilden einzelne Dateien, aber auch wo jeder dieser Blöcke und ihre Repliken gespeichert sind. Wenn ein Benutzer eine Datei in HDFS speichert, wird die Datei in Datenblöcke aufgeteilt, und drei Kopien dieser Datenblöcke werden in Slave-Knoten im gesamten Hadoop-Cluster gespeichert.
Das sind viele Datenblöcke, die man im Auge behalten sollte. Wie Sie vielleicht erwarten würden, macht der NameNode, wenn er weiß, wo die Körper vergraben sind, eine wichtige Komponente in einem Hadoop-Cluster. Wenn der NameNode nicht verfügbar ist, können Anwendungen nicht auf Daten zugreifen, die in HDFS gespeichert sind.
Wenn Sie die folgende Abbildung betrachten, können Sie den NameNode-Daemon sehen, der auf einem Master-Knotenserver läuft. Alle Zuordnungsinformationen, die sich auf die Datenblöcke und ihre entsprechenden Dateien beziehen, werden in einer Datei mit dem Namen gespeichert.
HDFS ist ein Journaling-Dateisystem, dh Datenänderungen werden in einem Bearbeitungsjournal protokolliert, das Ereignisse seit dem letzten Checkpoint protokolliert - dem letzten Zeitpunkt, zu dem das Bearbeitungsprotokoll zusammengeführt wurde. In HDFS wird das Bearbeitungsjournal in einer Datei namens named gespeichert, die im NameNode gespeichert ist.
NameNode Start und Vorgang
Um zu verstehen, wie der NameNode funktioniert, ist es hilfreich, sich dessen Startvorgang anzusehen. Da der NameNode dazu dient, Anwendungen darüber zu informieren, wie viele Datenblöcke sie verarbeiten müssen, und um den genauen Speicherort zu verfolgen, an dem sie gespeichert sind, benötigt sie alle Blockpositionen und Block-zu-Datei-Zuordnungen, die in RAM.
Dies sind die Schritte, die der NameNode durchführt. Um alle Informationen zu laden, die der NameNode nach dem Start benötigt, geschieht Folgendes:
-
Der NameNode lädt die Datei in den Speicher.
-
Der NameNode lädt die Datei und spielt die aufgezeichneten Änderungen erneut ab, um die bereits im Speicher befindlichen Blockmetadaten zu aktualisieren.
-
Die DataNode-Daemons senden die NameNode-Blockberichte.
Für jeden Slave-Knoten gibt es einen Blockreport, der alle dort gespeicherten Datenblöcke auflistet und deren Zustand beschreibt.
Nach Abschluss des Startvorgangs verfügt der NameNode über ein vollständiges Bild aller in HDFS gespeicherten Daten und ist bereit für den Empfang von Anwendungsanforderungen von Hadoop-Clients.
Wenn Datendateien basierend auf Clientanforderungen hinzugefügt und entfernt werden, werden die Änderungen in die Datenträgervolumes des Slaveknotens geschrieben, Journalaktualisierungen werden an der Datei vorgenommen und die Änderungen werden in den Blockspeichern und Metadaten im Speicher des Namensknotens widergespiegelt…
Während der gesamten Lebensdauer des Clusters senden die DataNode-Daemons alle drei Sekunden die NameNode-Heartbeats (ein schnelles Signal), um anzuzeigen, dass sie aktiv sind.(Dieser Standardwert ist konfigurierbar.) Alle sechs Stunden (wiederum eine konfigurierbare Standardeinstellung) senden die DataNodes dem NameNode einen Blockreport, der angibt, welche Dateiblöcke sich auf ihren Knoten befinden. Auf diese Weise verfügt der NameNode immer über eine aktuelle Sicht der verfügbaren Ressourcen im Cluster.
Schreiben von Daten
Um neue Dateien in HDFS zu erstellen, muss der folgende Prozess ausgeführt werden:
-
Der Client sendet eine Anfrage an den NameNode, um eine neue Datei zu erstellen.
Der NameNode bestimmt, wie viele Blöcke benötigt werden, und dem Client wird ein Lease zum Erstellen dieser neuen Dateiblöcke im Cluster erteilt. Als Teil dieser Lease hat der Client eine Zeitbegrenzung, um die Erstellungsaufgabe abzuschließen. (Diese Zeitgrenze stellt sicher, dass Speicherplatz nicht von ausgefallenen Client-Anwendungen belegt wird.)
-
Der Client schreibt dann die ersten Kopien der Dateiblöcke unter Verwendung der vom NameNode zugewiesenen Lease an die Slave-Knoten.
Der NameNode verarbeitet Schreibanforderungen und legt fest, wo die Dateiblöcke und ihre Replikate geschrieben werden müssen, wobei Verfügbarkeit und Leistung ausgeglichen werden. Die erste Kopie eines Dateiblocks wird in ein Rack geschrieben, und die zweite und dritte Kopie werden auf einem anderen Rack als die erste Kopie geschrieben, jedoch in verschiedenen Slave-Knoten im selben Rack. Diese Anordnung minimiert den Netzwerkverkehr und stellt gleichzeitig sicher, dass sich keine Datenblöcke am selben Ausfallpunkt befinden.
-
Da jeder Block in HDFS geschrieben wird, schreibt ein spezieller Prozess die verbleibenden Replikate in die anderen Slave-Knoten, die durch den NameNode identifiziert werden.
-
Nachdem die DataNode-Daemons bestätigt haben, dass die Dateiblockreplikate erstellt wurden, schließt die Clientanwendung die Datei und benachrichtigt den NameNode, der dann die offene Lease beendet.
Daten lesen
Um Dateien aus HDFS zu lesen, müsste der folgende Prozess stattfinden:
-
Der Client sendet eine Anfrage an den NameNode für eine Datei.
Der NameNode bestimmt, welche Blöcke betroffen sind und wählt basierend auf der Gesamtnähe der Blöcke zueinander und zum Client den effizientesten Zugriffspfad aus.
-
Der Client greift dann auf die Blöcke zu, wobei er die vom NameNode angegebenen Adressen verwendet.
Daten im Hadoop-Cluster ausgleichen
Im Laufe der Zeit, bei Kombinationen von ungleichen Dateneinlesemustern (bei denen einige Slave-Knoten möglicherweise mehr Daten geschrieben haben) oder Knotenausfällen, werden die Daten wahrscheinlich ungleichmäßig über die Racks verteilt. und Slave-Knoten in Ihrem Hadoop-Cluster.
Diese ungleichmäßige Verteilung kann sich nachteilig auf die Leistung auswirken, da die Anforderungen an einzelne Slave-Knoten unausgeglichen werden. Knoten mit wenig Daten werden nicht vollständig genutzt. und Knoten mit vielen Blöcken werden überstrapaziert. ( Hinweis: Überbeanspruchung und Unterbeanspruchung basieren auf der Festplattenaktivität, nicht auf CPU oder RAM.)
HDFS enthält ein Balancer-Dienstprogramm, um Blöcke von überbeanspruchten Slave-Knoten auf unterbelegte zu verteilen und dabei die Blöcke auf verschiedenen Slave-Knoten und Racks. Hadoop-Administratoren sollten den HDFS-Zustand regelmäßig überprüfen. Wenn die Daten ungleichmäßig verteilt werden, sollten sie das Balancer-Dienstprogramm aufrufen.
NameNode-Master-Server-Design
Der Master-Server, auf dem der NameNode-Daemon ausgeführt wird, benötigt aufgrund seiner unternehmenskritischen Eigenschaften deutlich andere Hardwareanforderungen als die für einen Slave-Knoten. Am wichtigsten ist es, Komponenten auf Unternehmensebene zu verwenden, um die Wahrscheinlichkeit eines Ausfalls zu minimieren. Außerdem benötigen Sie genügend RAM, um alle Metadaten und Standortdaten aller in HDFS gespeicherten Datenblöcke in den Speicher zu laden.