Behalten Sie Datenbausteine ​​mit NameNode in HDFS

Die NameNode fungiert als Adressbuch für Hadoop Distributed File System (HDFS), weil es nicht nur weiß, welche Blöcke einzelne Dateien zu machen, sondern auch, wo jeder dieser Blöcke und deren Nachbildungen werden gespeichert. Wenn ein Benutzer eine Datei in HDFS speichert, wird die Datei in Datenblöcke unterteilt, und drei Kopien dieser Datenblöcke werden in Slave-Knoten in der gesamten Hadoop-Cluster gespeichert.

Das ist eine Menge von Datenblöcken im Auge zu behalten. Wie Sie vielleicht erwarten, zu wissen, wo die Leichen begraben sind, macht die NameNode eine kritisch wichtige Komponente in einem Cluster Hadoop. Wenn die NameNode nicht verfügbar ist, können Anwendungen keine Daten in HDFS gespeichert sind, zugreifen.

Wenn Sie einen Blick auf die folgende Abbildung nehmen, können Sie die NameNode Daemon auf einem Master-Knoten-Server ausgeführt zu sehen. Alle Informationen Mapping mit den Datenblöcken und ihre entsprechenden Dateien zu tun ist, in einer Datei mit dem Namen gespeichert.

bild0.jpg

HDFS ist ein System Journaling-Datei, was bedeutet, dass alle Datenänderungen in einem Bearbeitungs Journal protokolliert werden, die Ereignisse seit der letzten Tracks Kontrollpunkt - das letzte Mal, wenn das Bearbeitungsprotokoll mit verschmolzen wurde. In HDFS wird das Bearbeiten Zeitschrift in einer Datei beibehalten benannt, die auf dem NameNode gespeichert ist.

NameNode Inbetriebnahme und Betrieb

Um zu verstehen, wie die NameNode funktioniert, ist es hilfreich, einen Blick darauf zu werfen, wie es anläuft. Da der Zweck der NameNode ist es, Anwendungen, wie viele Datenblöcke sie verarbeiten müssen zu informieren und den Überblick über die genaue Position zu halten, wo sie gespeichert sind, muss es alle Blockstellen und Block-zu-Dateizuordnungen, die in verfügbar sind RAM.

Dies sind die Schritte der NameNode nimmt. So laden Sie alle Informationen, die die NameNode muss, nachdem er gestartet wird, geschieht Folgendes:

  1. Die NameNode lädt die Datei in den Speicher.

  2. Die NameNode lädt die Datei und wieder spielt die protokollierten Änderungen der Block Metadaten zu aktualisieren, die bereits im Speicher ist.

  3. Die DataNode Daemons senden und die NameNode Block Berichte.

    Für jeden Slave-Knoten gibt es einen Block-Bericht, der die Daten aller Blöcke dort gespeichert listet und beschreibt die Gesundheit jedes einzelnen.

Nachdem der Startvorgang abgeschlossen ist, hat die NameNode ein vollständiges Bild aller in HDFS gespeicherten Daten, und es ist bereit Anwendungsanfragen von Hadoop Kunden zu erhalten.

Als Datendateien werden hinzugefügt und entfernt basierend auf Client-Anfragen werden die Änderungen an der Disk-Volumes des Knotens Slave geschrieben werden Journal Updates an der Datei und die Änderungen spiegeln sich in den Blockstellen und Metadaten im Speicher des NameNode gespeichert.

image1.jpg

Während der gesamten Lebensdauer des Clusters senden die DataNode Daemons die NameNode Herzschläge (ein schnelles Signal) alle drei Sekunden, was auf sie aktiv sind. (Dieser Standardwert ist konfigurierbar.) Alle sechs Stunden (wieder eine konfigurierbare Standard), die Datanodes den NameNode ein Block Bericht über senden, die Dateiblöcke auf ihren Knoten sind. Auf diese Weise hat die NameNode immer einen aktuellen Überblick über die verfügbaren Ressourcen im Cluster.

Das Schreiben von Daten

Um neue Dateien in HDFS erstellen, würde der folgende Prozess stattfinden müssen:

  1. Der Client sendet eine Anforderung an den NameNode eine neue Datei zu erstellen.

    Die NameNode legt fest, wie viele Blöcke benötigt werden, und der Kunde ist ein erteiltes mieten für diese neuen Dateiblöcke im Cluster zu erstellen. Im Rahmen dieses Mietvertrages hat der Kunde eine Frist die Schaffung Aufgabe abzuschließen. (Diese Frist wird sichergestellt, dass Speicherplatz nicht durch fehlgeschlagenen Client-Anwendungen aufgenommen.)

  2. Der Kunde schreibt dann die ersten Kopien der Dateiblöcke zu den Slave-Knoten, den Mietvertrag von der NameNode zugewiesen werden.

    Die NameNode Griffe Schreibanforderungen und bestimmt, wo die Dateiblöcke und deren Nachbildungen müssen geschrieben werden, Balancieren Verfügbarkeit und Leistung. Die erste Kopie einer Datei Block wird in einem Rack geschrieben, und die zweiten und dritten Kopien auf einem anderen Rack als die erste Kopie geschrieben, aber in verschiedenen Slave-Knoten im gleichen Rack. Diese Anordnung minimiert Verkehrsnetz, während sichergestellt wird, dass keine Datenblöcke auf dem gleichen Fehlerpunkt sind.

  3. Da jeder Block auf HDFS geschrieben wird, schreibt ein spezielles Verfahren die restlichen Repliken zu den anderen Slave-Knoten durch die NameNode identifiziert.

  4. Nachdem die DataNode Daemons die Datei Block Repliken bestätigen erstellt wurden, schließt die Client-Anwendung die Datei und benachrichtigt den NameNode, die dann die offene Mietvertrag geschlossen.

Lesen von Daten

Um Dateien von HDFS lesen, würde der folgende Prozess stattfinden müssen:

  1. Der Client sendet eine Anforderung an den NameNode für eine Datei.

    Die NameNode bestimmt, welche Blöcke beteiligt sind und wählt, basierend auf Gesamt Nähe der Blöcke miteinander und an den Client, den effizientesten Zugriffspfad.

  2. Der Client greift dann die Blöcke mit Hilfe der von der NameNode angegebenen Adressen.

Balancing Daten im Hadoop-Cluster

Im Laufe der Zeit, mit Kombinationen von unebenen Daten-Aufnahme-Muster (wo einige Slave-Knoten zu ihnen haben möglicherweise mehr Daten geschrieben) oder Knotenausfälle, sind Daten, wahrscheinlich über den Racks und Slave-Knoten in Ihrem Hadoop Cluster ungleichmäßig verteilt zu werden.

Diese ungleiche Verteilung kann eine negative Auswirkung auf die Leistung haben, weil die Nachfrage auf einzelnen Slave-Knoten unbalanced- Knoten mit wenig Daten werden nicht vollständig Gebraucht- und-Knoten werden mit vielen Blöcken wird überstrapaziert werden. (Hinweis: Die Übernutzung und underuse sind auf Plattenaktivität basiert, nicht auf der CPU oder RAM).

HDFS enthält eine Ausgleichs Dienstprogramm Blöcke von überstrapaziert Slave-Knoten zu wenig genutzt diejenigen zu verteilen, während die Politik der Aufrechterhaltung Blöcke auf verschiedenen Slave-Knoten und Racks setzen. Hadoop-Administratoren sollten regelmäßig HDFS Gesundheit zu überprüfen, und wenn Daten ungleichmäßig verteilt wird, sollten sie das Ausgleichs Dienstprogramm aufzurufen.

NameNode Master-Server-Design

Aufgrund seiner unternehmenskritischen Natur, der Master-Server den NameNode Daemon läuft, benötigt deutlich unterschiedliche Anforderungen an die Hardware als die für einen Slave-Knoten. Am wichtigsten ist, auf Unternehmensebene Komponenten müssen verwendet werden, um die Wahrscheinlichkeit eines Ausfalls zu minimieren. Sie werden auch über genügend RAM benötigen in den Speicher alle Metadaten und Standortdaten über alle Datenblöcke in HDFS gespeichert zu laden.

Menü