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 .


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.


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


12

Damit erhalten Sie Größe in GB

hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'

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 

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.


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


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


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

-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).


doppelte Antwort
mrsrinivas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.