2016-07-12 25 views
0

Angenommen, ich habe eine Datei von 50 MB und meine Standard HDFS Blockgröße ist 64 MB. Nach dem Speichern dieser 50-MB-Datei verbleibt eine Blockgröße von 14 MB, die zum Speichern einer anderen Datei verwendet werden kann. Nun speichert namenode die Blockinformationen der in HDFS vorhandenen Dateien. In diesem Fall gibt es also zwei Datensätze, die auf denselben Block verweisen, einen für die 50-MB-Datei und einen für die 14-MB-Datei.Nameode Block Management

Meine Frage ist, wie der namenode diese 2 Datensätze verfolgt und Metadateninformationen über die Dateien bereitstellt, da die 2 Dateien auf den gleichen Block zeigen.

Antwort

1

Sie liegen falsch mit der Annahme, mehrere Dateien pro Block zu haben. Ein Block kann nur eine Datei speichern, aber eine Datei kann auf mehreren Blöcken gespeichert werden (falls die Größe größer ist als die Größe des Blocks). Der Nameode wird also höchstens eine Datei pro Block zuordnen.

Beachten Sie, dass der Speicherplatz nur für die tatsächliche Dateigröße und nicht für die gesamte Blockgröße verwendet wird. Aus diesem Grund können viele kleine Dateien Auswirkungen auf den Speicher des Namenscodes haben.

0

Die erste Datei wird nicht entsprechend der Blockgröße gespeichert, sie wird entsprechend der Eingabeaufteilung gespeichert. Die Datei wird logisch in kleinere Teile unterteilt, die als Eingangs-Splits bezeichnet werden, die dann im Block gespeichert werden.

Zweitens ja es kann mehr als 1 Datei pro Block sein, was einfach bedeutet, dass es einen Fall geben kann, in dem mehr als 1 Eingangssplit in einem Block vorhanden ist. Diese Splits haben etwas namens EOL (Ende der Zeile), das dem Application Master hilft, den Überblick zu behalten, was wiederum den Namen des Knotens aktualisiert.

Weitere Details finden Sie unter https://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/ Dies wird alle Zweifel beseitigen.