2017-01-26 5 views

Antwort

1

Der NameNode weist die Block-ID zu und gibt sie dem Client. Der Client verwendet dann diese Block-ID, während er mit einem DataNode kommuniziert, um Daten in den Block zu schreiben.

Apache JIRA HDFS-4645 dokumentiert den aktuellen Entwurf für die Zuweisung von Block-IDs. Es verwendet eine monoton steigende ID ausgehend von einer bestimmten Konstante. Wenn Sie daran interessiert sind, den Code dafür zu sehen, lesen Sie die Klassen BlockIdManager und SequentialBlockIdGenerator in der Apache Hadoop Codebase.

+0

Bitte korrigieren Sie mich, wenn ich falsch liege. Nach meinem Verständnis wird Client die Datei in Blöcke aufteilen. Der Client fragt den Knoten Name ab, um die Verfügbarkeit von Datenknoten zu erhalten. Dann schreibt er diese Blöcke in Datenknoten. Sobald der Schreibvorgang abgeschlossen ist. Datenknoten stellen Blockinformationen für Name node bereit. Dann nur Meta-Daten für Meta-Daten des Namensknotens In diesem Prozess wird eine Block-ID generiert, da client die Blöcke tatsächlich aufteilt.Wie Name-Knoten Block-IDs für Blöcke zuweist, wenn der Name-Knoten nicht von Datenknoten aktualisiert wird . –

+0

Es ist richtig, dass der Client entscheidet, wann ein neuer Block für die Datei zugewiesen werden muss, aber der NameNode ist immer der zentrale Punkt für die Zuweisung einer neuen Block-ID. Der Client führt einen RPC-Aufruf an den NameNode aus, um den Block zuzuweisen. Dann erzeugt der NameNode eine Block-ID, speichert sie in Metadaten und sendet diese Block-ID zurück an den Client. Dann verwendet der Client diese Block-ID bei der Kommunikation mit dem DataNode. –

+1

Sie meinen, wenn der Client den Knoten Name fragt, um Datenknoten für einen Block zuzuweisen, sendet er eine Block-ID für diesen Block an den Client? –