Kleine Dateien und HDFS-Blöcke

7

Speichert ein Block in Hadoop Distributed File System mehrere kleine Dateien oder speichert ein Block nur eine Datei?

    
Eugen 19.12.2011, 14:42
quelle

5 Antworten

13

Mehrere Dateien werden nicht in einem einzelnen Block gespeichert. Übrigens kann eine einzelne Datei in mehreren Blöcken gespeichert werden. Die Zuordnung zwischen der Datei und den Block-IDs wird im NameNode beibehalten.

Nach dem Hadoop: Der endgültige Leitfaden

  

Im Gegensatz zu einem Dateisystem für eine einzelne Festplatte belegt eine Datei in HDFS, die kleiner als ein einzelner Block ist, nicht den gesamten zugrunde liegenden Speicher eines ganzen Blocks.

HDFS wurde für die Verarbeitung großer Dateien entwickelt. Wenn zu viele kleine Dateien vorhanden sind, wird der NameNode möglicherweise geladen, da der Namensbereich für HDFS gespeichert wird. In diesem Artikel erfahren Sie, wie Sie das Problem mit zu vielen kleinen Dateien beheben können.

    
Praveen Sripati 19.12.2011, 15:22
quelle
3

Nun, Sie könnten das mit dem HAR (Hadoop Archive) Dateisystem machen, das versucht, mehrere kleine Dateien in den HDFS-Block einer Spezialteildatei zu packen, die vom HAR-Dateisystem verwaltet wird.

    
Rajat Sharma 11.03.2013 16:52
quelle
3

Ein Block speichert eine einzelne Datei. Wenn Ihre Datei größer ist als BlockSize (64/128 / ..), wird sie in mehrere Blöcke mit entsprechender BlockSize aufgeteilt.

    
Meet S 28.06.2013 19:42
quelle
2

Die Hadoop-Blockgröße ist das Hadoop-Speicherkonzept. Jedes Mal Wenn Sie eine Datei in Hadoop speichern, wird sie in die Blockgrößen unterteilt und basierend auf dem Replikationsfaktor und der Datenlokalisierung über den Cluster verteilt.

Für Details:

  • Wenn Sie eine Datei auf HDFS schieben, wird sie in Blöcke aufgeteilt. Jeder Block ist wie eine einzelne Datei mit einer maximalen Größe, wie durch die Blockgröße beschrieben.

  • Jeder Block enthält eine .meta-Datei, um die Metadateninformationen des Blocks in Hadoop zu speichern.

  • Wenn die Datei sehr klein ist, befindet sich die gesamte Datei in einem Block und der Block (eine Speicherdatei) hat dieselbe Größe wie die Datei und eine Meta-Datei.

Einige Befehle:

  • Verbinde mit einem beliebigen Datenknoten in deinem Cluster [wenn du Zugriff hast;)]. Dann gehen Sie zu den Speicherverzeichnissen für diesen Knoten und Sie können die tatsächlichen Blöcke sehen, die auf dem Datenknoten wie folgt gespeichert sind.

(Dir's sind wie in meinem Cluster - / data2 / dfs / dn /):

BLOCK Größe: 1 GB

cd / data / dfs / dn - & gt; aktuell - & gt; Abgeschlossen - & gt; subDir0 - & gt; ( hier ist das Gold )

Block verwendet nur KB des Speichers für kleine Dateien oder könnte sein, wenn die Dateigröße meine Blockgröße + einige KB

ist

-rw-r - r-- 1 hdfs hdfs 91K Sep 13 16:19 blk_1073781504

-rw-r - r-- 1 hdfs hdfs 19K Sep 13 16:21 blk_1073781504_40923.meta

Wenn die Datei größer ist als die Blockgröße, sieht der Block wie folgt aus:

-rw-r - r-- 1 hdfs hdfs 1.0G 31. August 12:03 blk_1073753814

-rw-r - r-- 1 hdfs hdfs 8.1M 31. August 12:04 blk_1073753814_12994.meta

Ich hoffe, es wird das Blockspeicher-Zeug erklären. Wenn Sie wissen möchten, wie Ihre Dateien in Blöcken gespeichert sind, führen Sie

aus

hdfs fsck-blocks-locations

Lass es mich wissen, wenn ich hier etwas verpasst habe.

    
iSingh 15.09.2017 15:02
quelle
0

Der wichtigste Punkt muss in hdfs verstanden werden, file is partioned into blocks based on size und nicht, dass es einige Blöcke im Speicher gibt, in denen Dateien gespeichert sind (dies ist ein Missverständnis)

Grundsätzlich werden mehrere Dateien nicht in einem einzigen Block gespeichert (es sei denn, es handelt sich um eine Archiv- oder Har-Datei).

    
Nagendra kumar 26.06.2014 10:57
quelle

Tags und Links