Datenblöcke im Hadoop Distributed File System (HDFS)

Wenn Sie eine Datei in HDFS speichern, bricht es das System in eine Reihe von einzelnen Blöcke nach unten und speichert diese Blöcke in verschiedenen Slave-Knoten im Cluster Hadoop. Dies ist eine ganz normale Sache zu tun, da alle Dateisysteme Dateien in Blöcke brechen, bevor sie auf die Festplatte zu speichern.

bild0.jpg

HDFS hat keine Ahnung (und kümmert sich nicht), was in der Datei gespeichert sind, so Raw-Dateien sind nicht in Übereinstimmung mit den Regeln aufgeteilt, die wir Menschen verstehen würde. Den Menschen, zum Beispiel möchte Rekord Grenzen - die Linien zeigt, wo eine Aufzeichnung beginnt und endet - respektiert werden.

HDFS ist oft völlig ahnungslos, dass der endgültige Datensatz in einem Block nur ein Teil der Aufzeichnung sein kann, mit dem Rest seines Inhalts dem folgenden Block abgeschoben. HDFS will nur sicherstellen, dass die Dateien in gleichgroße Blöcke aufgeteilt sind, die die vorgegebene Blockgröße für die Hadoop-Instanz übereinstimmen (es sei denn, eine benutzerdefinierte Wert für die Datei eingegeben wurde gespeichert). In der vorhergehenden Figur, ist, dass die Blockgröße 128 MB.

Nicht jede Datei, die Sie speichern müssen, ist ein exaktes Vielfaches Ihres Systems Blockgröße, so dass die endgültige Datenblock für eine Datei verwendet nur so viel Platz wie nötig ist. In dem Fall der vorhergehenden Figur, ist der letzte Datenblock 1MB.

Das Konzept der eine Datei als eine Ansammlung von Blöcken zu speichern ist völlig im Einklang mit wie Dateisysteme normal arbeiten. Aber was ist anders an HDFS ist der Maßstab. Eine typische Blockgröße, die Sie in einem Dateisystem unter Linux sehen würde, ist 4 KB, während eine typische Blockgröße in Hadoop 128MB ist. Dieser Wert ist konfigurierbar und kann individuell angepasst werden, da beide ein neues System-Standard und einen benutzerdefinierten Wert für einzelne Dateien.

Hadoop wurde entwickelt, um Daten zu speichern, in den Petabyte-Skala, wo potenzielle Einschränkungen horizontale Skalierung minimiert werden. Die hohe Blockgröße ist eine direkte Folge dieser Notwendigkeit zur Speicherung von Daten in großem Maßstab.

Zunächst einmal muss jeder Datenblock in HDFS gespeichert hat seine eigenen Metadaten und von einem zentralen Server verfolgt werden, so dass, um Anwendungen, die eine bestimmte Datei zugreifen, wo immer die Blöcke der alle Datei gespeichert gerichtet werden kann. Wenn die Blockgröße in dem Bereich Kilobyte waren, auch bescheidene Datenmengen im Terabyte-Skala würde der Metadaten-Server zu viele Blöcke überwältigen zu verfolgen.

Zweitens wird HDFS ausgelegt hohen Durchsatz zu ermöglichen, so dass die parallele Verarbeitung dieser großen Datenmengen, so schnell wie möglich geschieht. Der Schlüssel zu Hadoop die Skalierbarkeit auf der Datenverarbeitungsseite ist, und wird es immer sein, Parallelität - die Fähigkeit, die einzelnen Blöcke dieser großen Dateien parallel zu verarbeiten.

Um eine effiziente Verarbeitung zu ermöglichen, muss ein Gleichgewicht gefunden werden. Einerseits muss die Blockgröße groß genug sein, um die Ressourcen zu einer individuellen Einheit der Datenverarbeitung (beispielsweise eine Karte oder reduzieren Aufgabe) gewidmet zu rechtfertigen. Auf der anderen Seite kann die Blockgröße nicht so groß sein, dass das System eine sehr lange Zeit für eine letzte Einheit der Datenverarbeitung wartet seine Arbeit zu beenden.

Diese beiden Überlegungen hängen offensichtlich von der Art der Arbeit an den Datenblöcken durchgeführt wird.

Menü