Risposte:
Prima della 0.20.203 e ufficialmente deprecata nella 2.6.0:
hadoop fs -dus [directory]
Da 0.20.203 (dead link) 1.0.4 e ancora compatibile con 2.6.0 :
hdfs dfs -du [-s] [-h] URI [URI …]
Puoi anche correre hadoop fs -help
per ulteriori informazioni e specifiche.
hadoop fs -du -s -h /path/to/dir
mostra la dimensione di una directory in forma leggibile.
hdfs -du -s -h /path/to/dir
è più appropriato.
Estendendosi a Matt D e ad altre risposte, il comando può essere fino ad Apache Hadoop 3.0.0
hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]
Visualizza le dimensioni dei file e delle directory contenute nella directory specificata o la lunghezza di un file nel caso in cui sia solo un file.
Opzioni:
- L' opzione -s comporterà la visualizzazione di un riepilogo aggregato delle lunghezze dei file , anziché dei singoli file. Senza l'opzione -s, il calcolo viene eseguito andando in profondità di 1 livello dal percorso specificato.
- L' opzione -h formatterà le dimensioni dei file in modo leggibile dall'uomo (ad esempio 64.0m invece di 67108864)
- L' opzione -v mostrerà i nomi delle colonne come riga di intestazione.
- L' opzione -x escluderà le istantanee dal calcolo dei risultati. Senza l'opzione -x (impostazione predefinita), il risultato viene sempre calcolato da tutti gli INode, inclusi tutti gli snapshot nel percorso specificato.
+-------------------------------------------------------------------+
| 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
Codice di uscita: restituisce 0 in caso di successo e -1 in caso di errore.
Con questo otterrai dimensioni in GB
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
Quando si tenta di calcolare il totale di un particolare gruppo di file all'interno di una directory, l' -s
opzione non funziona (in Hadoop 2.7.1). Per esempio:
Struttura delle directory:
some_dir
├abc.txt
├count1.txt
├count2.txt
└def.txt
Supponiamo che ogni file abbia una dimensione di 1 KB. Puoi riassumere l'intera directory con:
hdfs dfs -du -s some_dir
4096 some_dir
Tuttavia, se voglio la somma di tutti i file contenenti "count", il comando non è sufficiente.
hdfs dfs -du -s some_dir/count*
1024 some_dir/count1.txt
1024 some_dir/count2.txt
Per aggirare questo problema di solito passo l'output tramite awk.
hdfs dfs -du some_dir/count* | awk '{ total+=$1 } END { print total }'
2048
Per ottenere la dimensione della directory si può usare hdfs dfs -du -s -h / $ yourDirectoryName . hdfs dfsadmin -report può essere utilizzato per visualizzare un rapido report di archiviazione a livello di cluster.
% di spazio utilizzato nel cluster Hadoop
sudo -u hdfs hadoop fs –df
Capacità nella cartella specifica:
sudo -u hdfs hadoop fs -du -h /user
hadoop fs -du -h /user
(non avevo bisogno di usare sudo
)
sudo
non è necessario e dovrebbe essere usato con parsimonia.
hdfs dfs -count <dir>
informazioni dalla pagina man:
-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
Il comando dovrebbe essere hadoop fs -du -s -h \dirPath
-du [-s] [-h] ...: Mostra la quantità di spazio, in byte, usata dai file che corrispondono al modello di file specificato.
-s : invece di mostrare la dimensione di ogni singolo file che corrisponde al
modello, mostra la dimensione totale (riepilogo).
-h : formatta le dimensioni dei file in modo leggibile dall'uomo piuttosto che un numero di byte. (Ex MB / GB / TB ecc.)
Si noti che, anche senza l'opzione -s, questo mostra solo i riepiloghi delle dimensioni un livello in profondità in una directory.
L'output è nel nome della dimensione del modulo (percorso completo)