Antworten:
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 -help
für weitere Informationen und Einzelheiten laufen .
hadoop fs -du -s -h /path/to/dir
Zeigt die Größe eines Verzeichnisses in lesbarer Form an.
hdfs -du -s -h /path/to/dir
dies besser geeignet.
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.
+-------------------------------------------------------------------+
| size | disk_space_consumed_with_all_replicas | full_path_name |
+-------------------------------------------------------------------+
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.
Damit erhalten Sie Größe in GB
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
Beim Versuch, die Summe einer bestimmten Gruppe von Dateien in einem Verzeichnis zu berechnen, -s
funktioniert 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
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.
% 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
hadoop fs -du -h /user
(ich musste es nicht benutzen sudo
)
sudo
wird nicht benötigt und sollte sparsam eingesetzt werden.
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
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).