Wie zeigt der Titel an, wenn ein Client anfordert, eine Datei in die hdfs zu schreiben, wie wählt der HDFS- oder Name-Knoten aus, welcher Datenknoten die Datei speichert? Versuchen die hdfs, alle Blöcke dieser Datei im selben Knoten oder einem Knoten im selben Rack zu speichern, wenn es zu groß ist? Verfügen die hdfs über APIs für Anwendungen zum Speichern der Datei in einem bestimmten Datenknoten?
Der Code für die Auswahl des Datenknotens ist in der Funktion ReplicationTargetChooser.chooseTarget()
.
Der Kommentar sagt Folgendes:
Die Replica-Platzierungsstrategie lautet, dass der Writer sich auf a befindet Datanode, das 1. Replikat wird sonst auf dem lokalen Rechner abgelegt ein zufälliger Datenknoten. Das zweite Replikat wird auf einem Datanode platziert, der aktiviert ist ein anderes Rack. Das 3. Replikat wird auf einen Datanode platziert, der aktiviert ist das gleiche Rack wie das erste Replikat.
Es bietet keine API für Anwendungen zum Speichern der Datei in dem gewünschten Datanode.
Wie wählt der HDFS- oder Name-Knoten aus, welcher Datenknoten die Datei speichert?
HDFS verfügt über einen BlockPlacementPolicyDefault , überprüfen Sie die API-Dokumentation für weitere Details. Es sollte möglich sein, BlockPlacementPolicy für ein benutzerdefiniertes Verhalten.
Bietet die hdfs APIs für Anwendungen, um die Datei in einem bestimmten Datenknoten zu speichern, wie er will?
Das Platzierungsverhalten sollte nicht für einen bestimmten Datenknoten spezifisch sein. Das macht HDFS resistent gegen Ausfälle und skalierbar.
Mit Hadoop-385 Patch können wir jetzt die Block-Placement-Richtlinie auswählen, um sie zu platzieren alle Blöcke einer Datei im selben Knoten (und ähnlich für replizierte Knoten). Lesen Sie diesen Blog zu diesem Thema - lesen Sie den Kommentarbereich .
Sie können dies sehen, wenn namenode den Datenknoten anweist, Daten zu speichern. Das erste Replikat wird auf dem lokalen Computer gespeichert und die anderen beiden Replikate werden auf einem anderen Rack usw. erstellt.
Wenn ein Replikat fehlschlägt, werden Daten von einem anderen Replikat gespeichert. Die Wahrscheinlichkeit, dass du jede Replik versagst, ist genauso wie das Fallen eines Fächers auf deinen Kopf während du schläfst: p. D. H., Es gibt sehr viel weniger Chancen dafür.