it-swarm.com.de

Wie kann man eine HDFS-Verzeichnisgröße überprüfen?

Ich kenne du -sh in gängigen Linux-Dateisystemen. Aber wie geht das mit HDFS?

70
Cheng

Vor dem 0.20.203 und offiziell in 2.6.0 veraltet:

hadoop fs -dus [directory]

Schon seit 0.20.203 (tote Verbindung) 1.0.4 und noch kompatibel durch 2.6.0 :

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

Sie können auch hadoop fs -help ausführen, um weitere Informationen und Einzelheiten zu erhalten.

134
Matt D

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

52
Marius Soutier

Erweitert auf Matt D und andere Antworten, kann der Befehl bis Apache Hadoop 3.0.0-alpha4 sein.

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

Es zeigt die Größe der Dateien und Verzeichnisse im angegebenen Verzeichnis oder die Länge einer Datei an, 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 wird die Berechnung durchgeführt, indem Sie vom angegebenen Pfad aus eine Ebene tiefer gehen.
  • Die Option -h formatiert die Dateigrößen auf eine menschenlesbare Art (z. B. 64.0m statt 67108864) 
  • Die Option -v zeigt die Namen der Spalten als Kopfzeile an. 
  • Die Option -x schließt Momentaufnahmen von der Ergebnisberechnung aus. Ohne die Option -x (Standard) wird das Ergebnis immer aus allen INodes berechnet, einschließlich aller Momentaufnahmen unter dem angegebenen Pfad. 

Das Du gibt drei Spalten mit folgendem 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

13
mrsrinivas

Damit erhalten Sie Größe in GB

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

% des belegten Speicherplatzes im Hadoop-Cluster
Sudo -u hdfs hadoop fs –df

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

1
Oren Efron

Um die Größe des Verzeichnisses hdfs dfs -du -s -h/$ yourDirectoryNamezu ermitteln, kann _ verwendet werden. hdfs dfsadmin -report kann verwendet werden, um einen schnellen Speicherbericht auf Clusterebene anzuzeigen. 

1
Harikrishnan Ck

Beim Versuch, die Gesamtzahl einer bestimmten Gruppe von Dateien in einem Verzeichnis zu berechnen, funktioniert die Option -s nicht (in Hadoop 2.7.1). Zum Beispiel:

Verzeichnisaufbau:

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

Angenommen, jede Datei hat eine Größe von 1 KB. 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" erhalten möchte, reicht der Befehl nicht aus.

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

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

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

hadoop Version 2.3.33:

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

 enter image description here

0
LuciferJack

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
0
J.Doe