Wie kann man die Größe eines HDFS-Verzeichnisses überprüfen?

Antworten:

161

Vor 0.20.203 und offiziell in 2.6.0 veraltet:

hadoop fs -dus [directory]

Seit 0.20.203 (Dead Link) 1.0.4 und noch kompatibel über 2.6.0 :

hdfs dfs -du [-s] [-h] URI [URI …]

Sie können auch hadoop fs -helpfür weitere Informationen und Einzelheiten laufen .

Matt D.
quelle
19
-du -s (-dus ist veraltet)
Carlos Rendon
69

hadoop fs -du -s -h /path/to/dir Zeigt die Größe eines Verzeichnisses in lesbarer Form an.

Marius Soutier
quelle
Für neuere Versionen von HDFS ist hdfs -du -s -h /path/to/dirdies besser geeignet.
Adelson Araújo
26

Der Befehl kann bis zu Apache Hadoop 3.0.0 auf Matt D und andere Antworten ausgedehnt werden

hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]

Es zeigt die Größe der Dateien und Verzeichnisse an, die im angegebenen Verzeichnis enthalten sind, oder die Länge einer Datei, falls es sich nur um eine Datei handelt.

Optionen:

  • Die Option -s führt dazu, dass anstelle der einzelnen Dateien eine aggregierte Zusammenfassung der Dateilängen angezeigt wird. Ohne die Option -s erfolgt die Berechnung, indem der angegebene Pfad 1 Ebene tief verlassen wird.
  • Mit der Option -h werden Dateigrößen lesbar formatiert (z. B. 64,0 m anstelle von 67108864).
  • Die Option -v zeigt die Namen der Spalten als Kopfzeile an.
  • Die Option -x schließt Schnappschüsse von der Ergebnisberechnung aus. Ohne die Option -x (Standard) wird das Ergebnis immer aus allen INodes berechnet, einschließlich aller Snapshots unter dem angegebenen Pfad.

Das du gibt drei Spalten mit dem folgenden Format zurück:

 +-------------------------------------------------------------------+ 
 | size  |  disk_space_consumed_with_all_replicas  |  full_path_name | 
 +-------------------------------------------------------------------+ 

Beispielbefehl:

hadoop fs -du /user/hadoop/dir1 \
    /user/hadoop/file1 \
    hdfs://nn.example.com/user/hadoop/dir1 

Exit Code: Gibt bei Erfolg 0 und bei Fehler -1 zurück.

Quelle: Apache doc

mrsrinivas
quelle
12

Damit erhalten Sie Größe in GB

hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
Dilshad
quelle
1
hdfs dfs -du PATHTODIRECTORY | awk '/ ^ [0-9] + / {print int ($ 1 / (1024 3) "[GB] \ t" $ 2}' - Bitte aktualisieren Sie Ihren Befehl. Zwei schließende Klammern nach 1024 3. Es sollte nur 1 sein
Gubs
2

Beim Versuch, die Summe einer bestimmten Gruppe von Dateien in einem Verzeichnis zu berechnen, -sfunktioniert die Option nicht (in Hadoop 2.7.1). Beispielsweise:

Verzeichnisaufbau:

some_dir
├abc.txt    
├count1.txt 
├count2.txt 
└def.txt    

Angenommen, jede Datei ist 1 KB groß. Sie können das gesamte Verzeichnis zusammenfassen mit:

hdfs dfs -du -s some_dir
4096 some_dir

Wenn ich jedoch die Summe aller Dateien mit "count" möchte, ist der Befehl nicht ausreichend.

hdfs dfs -du -s some_dir/count*
1024 some_dir/count1.txt
1024 some_dir/count2.txt

Um dies zu umgehen, leite ich die Ausgabe normalerweise durch awk.

hdfs dfs -du some_dir/count* | awk '{ total+=$1 } END { print total }'
2048 
Grr
quelle
1

Um die Größe des Verzeichnisses zu ermitteln, kann hdfs dfs -du -s -h / $ yourDirectoryName verwendet werden. Mit hdfs dfsadmin -report kann ein schneller Speicherbericht auf Clusterebene angezeigt werden.

Harikrishnan Ck
quelle
0

% des verwendeten Speicherplatzes im Hadoop-Cluster
sudo -u hdfs hadoop fs –df

Kapazität unter einem bestimmten Ordner:
sudo -u hdfs hadoop fs -du -h /user

Oren Efron
quelle
Ich habe einen Fehler mit "hdfs" bekommen, die Art und Weise, wie es für mich funktionierte, war: hadoop fs -du -h /user (ich musste es nicht benutzen sudo)
diens
sudowird nicht benötigt und sollte sparsam eingesetzt werden.
Climbs_lika_Spyder
0

Hadoop Version 2.3.33:

hadoop fs -dus  /path/to/dir  |   awk '{print $2/1024**3 " G"}' 

Geben Sie hier die Bildbeschreibung ein

LuciferJack
quelle
0

hdfs dfs -count <dir>

Infos von der Manpage:

-count [-q] [-h] [-v] [-t [<storage type>]] [-u] <path> ... :
  Count the number of directories, files and bytes under the paths
  that match the specified file pattern.  The output columns are:
  DIR_COUNT FILE_COUNT CONTENT_SIZE PATHNAME
  or, with the -q option:
  QUOTA REM_QUOTA SPACE_QUOTA REM_SPACE_QUOTA
        DIR_COUNT FILE_COUNT CONTENT_SIZE PATHNAME
J.Doe
quelle
-1

Befehl sollte sein hadoop fs -du -s -h \dirPath

  • -du [-s] [-h] ...: Zeigt den Speicherplatz in Byte an, der von den Dateien verwendet wird, die dem angegebenen Dateimuster entsprechen.

  • -s : Anstatt die Größe jeder einzelnen Datei anzuzeigen, die dem
    Muster entspricht, wird die Gesamtgröße (Zusammenfassung) angezeigt.

  • -h : Formatiert die Größe von Dateien auf lesbare Weise und nicht in Anzahl von Bytes. (Ex MB / GB / TB usw.)

    Beachten Sie, dass auch ohne die Option -s Größenzusammenfassungen nur eine Ebene tief in einem Verzeichnis angezeigt werden.

    Die Ausgabe erfolgt im Namen der Formulargröße (vollständiger Pfad).

vijayraj34
quelle
doppelte Antwort
mrsrinivas