Il modo per controllare le dimensioni di una directory HDFS?


Risposte:


163

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 -helpper ulteriori informazioni e specifiche.


19
-du -s (-dus è deprecato)
Carlos Rendon

69

hadoop fs -du -s -h /path/to/dir mostra la dimensione di una directory in forma leggibile.


Per le versioni più recenti di hdfs, hdfs -du -s -h /path/to/dirè più appropriato.
Adelson Araújo

26

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.

Il du restituisce tre colonne con il seguente formato:

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

Comando di esempio:

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.

fonte: Apache doc


12

Con questo otterrai dimensioni 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}' - Aggiorna il comando. Due parentesi di chiusura dopo 1024 3. Dovrebbe essere solo 1
gubs

2

Quando si tenta di calcolare il totale di un particolare gruppo di file all'interno di una directory, l' -sopzione 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 

1

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.


0

% di spazio utilizzato nel cluster Hadoop
sudo -u hdfs hadoop fs –df

Capacità nella cartella specifica:
sudo -u hdfs hadoop fs -du -h /user


Ho ricevuto un errore con "hdfs", il modo in cui ha funzionato per me è stato: hadoop fs -du -h /user (non avevo bisogno di usare sudo)
diens

sudonon è necessario e dovrebbe essere usato con parsimonia.
Climbs_lika_Spyder

0

hadoop versione 2.3.33:

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

inserisci qui la descrizione dell'immagine


0

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

-1

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)


risposta duplicata
mrsrinivas
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.