Namespacebild und Bearbeitungsprotokoll

7

Aus dem Buch " Hadoop The Definitive Guide " wird unter dem Thema Nameodes und Datanodes Folgendes erwähnt:

  

Der namenode verwaltet den Dateisystem-Namespace. Es behält die   Dateisystembaum und die Metadaten für alle Dateien und Verzeichnisse in   der Baum. Diese Information wird dauerhaft auf dem lokalen Datenträger in gespeichert   die Form von zwei Dateien: das Namespacebild und das Bearbeitungsprotokoll.

     

sekundärer Namenscode, der trotz seines Namens nicht als Namenscode dient.   Seine Hauptaufgabe besteht darin, das Namespacebild regelmäßig mit dem zu verschmelzen   Bearbeiten Sie das Protokoll, um zu verhindern, dass das Bearbeitungsprotokoll zu groß wird.

Ich habe etwas Verwirrung mit diesen Dateien Namespace und Protokoll bearbeiten .

Das Namespace-Bild dient zum Speichern der Metadaten.

Also, meine Fragen sind

  1. Was ist das Bearbeitungsprotokoll ? Und was ist seine Rolle?
  2. Können Sie die Anweisung " erklären? Ihre Hauptaufgabe besteht darin, das Namespacebild regelmäßig mit dem Bearbeitungsprotokoll zu verbinden, um zu verhindern, dass das Bearbeitungsprotokoll erstellt wird zu groß . "?
user4221591 15.11.2014, 06:16
quelle

1 Antwort

19
  

Bitte kann mir jemand erklären, was das Bearbeitungsprotokoll ist? Welche Rolle spielt diese Protokolldatei?

Wenn der NameNode zum ersten Mal gestartet wird, ist die Datei fsimage selbst leer. Wann immer NameNode eine Anforderung zum Erstellen / Aktualisieren / Löschen erhält, wird diese Anforderung zuerst in der edits -Datei aufgezeichnet, damit die Dauerhaftigkeit in der Datei edits beibehalten wird. Außerdem wird eine speicherinterne Aktualisierung durchgeführt. Da alle Leseanforderungen aus dem speicherinternen Snapshot der Metadaten bereitgestellt werden.

  

Seine Hauptaufgabe besteht darin, das Namespace-Image regelmäßig mit dem Bearbeitungsprotokoll zu verbinden, um zu verhindern, dass das Bearbeitungsprotokoll zu groß wird.

Sie sehen also, dass die edits -Datei zu diesem Zeitpunkt immer noch außerhalb der Grenzen wächst. Wenn nun der NameNode neugestartet wird oder aus irgendeinem Grund heruntergefahren und wieder hochgefahren wird, hat er keine Speicherrepräsentation der Metadaten, also muss er die edits -Datei lesen und den Snapshot im Speicher neu erstellen, was eine Weile dauern kann auf der edits Dateigröße.

Da edits selbst ein WAL (Write Ahead Log) ist, müssen alle Ereignisse nacheinander geschrieben werden (nur anhängen). Es könnte keine Aktualisierungen in der Datei geben, um zufällige Festplattensuchvorgänge zu verhindern.

Um diesen Overhead zu vermeiden (oder edits Datei verwaltbar zu halten) wurde SecondaryNameNode eingeführt. Der einzige Zweck der SNN besteht darin, sicherzustellen, dass die edits -Datei nicht außerhalb der Grenzen wächst. SNN löst also standardmäßig einen Prozess namens checkpointing aus, wenn edits Datei 64 MB oder jede Stunde erreicht (was immer zuerst eintritt).

Das Überprüfen des Prozesses selbst ist einfach, die SNN teilt der NN mit, dass sie ihr aktuelles edits Protokoll erstellt und eine neue Editierdatei mit dem Namen edits.new erstellt. SNN kopiert dann die fsimage- und edits-Datei von NN und beginnt mit der Anwendung der Ereignisse In der Editierungsdatei zu der bereits vorhandenen fsimage-Datei (von NN) wird die neue fsimage-Datei nach Fertigstellung an NN zurückgeschickt, und das NN ersetzt das vorhandene fsimage durch das neue SNN und benennt das edits.new in% co_de um %. Das NN hat jetzt eine aktuelle Version von edits , auf die Ereignisse von der fsimage -Datei angewendet wurden.

Wenn also der NameNode nach Abschluss des Prüfpunkts neu gestartet wird, muss NameNode nur den edits in den Speicher laden und nur die aktuellen Aktualisierungen von fsimage log anwenden (die nach Abschluss des Prüfpunkts gefüllt wurden) um sicherzustellen, dass es die aktuelle Ansicht des Namespace hat, die effizienter ist.

    
Ashrith 15.11.2014, 08:08
quelle

Tags und Links