129 votes

Comment vérifier la taille d'un répertoire HDFS ?

Je sais. du -sh dans les systèmes de fichiers Linux courants. Mais comment faire cela avec HDFS ?

201voto

Matt D Points 2885

Antérieur à 0.20.203, et officiellement déprécié en 2.6.0 :

hadoop fs -dus [directory]

Depuis 0.20.203 (lien mort) 1.0.4 et toujours compatible par 2.6.0 :

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

Vous pouvez également exécuter hadoop fs -help pour plus d'informations et de détails.

29 votes

-du -s (-dus est déprécié)

91voto

Marius Soutier Points 4706

hadoop fs -du -s -h /path/to/dir affiche la taille d'un répertoire sous une forme lisible.

1 votes

Pour les versions plus récentes de hdfs, hdfs -du -s -h /path/to/dir c'est plus approprié.

47voto

MR Srinivas Points 1730

S'étendant jusqu'à Matt D et d'autres réponses, la commande peut être jusqu'à Apache Hadoop 3.0.0

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

Il affiche les tailles des fichiers et des répertoires contenus dans le répertoire donné ou la longueur d'un fichier s'il s'agit simplement d'un fichier.

Options :

  • Le site -s donnera lieu à un résumé agrégé des longueurs de fichiers qui est affiché, plutôt que les fichiers individuels. Sans l'option -s, le calcul est effectué en remontant d'un niveau à partir du chemin donné.
  • Le site -h permet de formater la taille des fichiers dans un format lisible par l'homme mode (par exemple 64,0m au lieu de 67108864)
  • Le site -v l'option affichera les noms des colonnes comme une ligne d'en-tête.
  • Le site -x L'option exclure les instantanés du calcul du résultat. Sans l'option -x (par défaut), le résultat est toujours calculé à partir de tous les INodes, y compris tous les snapshots sous le chemin donné.

du renvoie trois colonnes au format suivant :

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

Exemple de commande :

hadoop fs -du /user/hadoop/dir1 \
    /user/hadoop/file1 \
    hdfs://nn.example.com/user/hadoop/dir1 

Code de sortie : Renvoie 0 en cas de succès et -1 en cas d'erreur.

source : Document Apache

0 votes

+1 pour l'information sur les résultats ! Je ne comprenais pas pourquoi j'obtenais deux résultats (taille et espace disque) au lieu d'un seul. Merci !

0 votes

disk_space = size * replication_factor

13voto

dilshad Points 389

Avec ceci vous obtiendrez la taille en GB

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

1 votes

Hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024 3) " [GB] \t " $2 }' - Veuillez mettre à jour votre commande. Deux crochets fermants après 1024 3. Il ne devrait être que de 1

5voto

Grr Points 6929

Lorsque l'on essaie de calculer le total d'un groupe particulier de fichiers dans un répertoire, la méthode de calcul de la valeur totale est la suivante -s ne fonctionne pas (dans Hadoop 2.7.1). Par exemple :

Structure du répertoire :

some_dir
abc.txt    
count1.txt 
count2.txt 
def.txt    

Supposons que chaque fichier a une taille de 1 KB. Vous pouvez résumer le répertoire entier avec :

hdfs dfs -du -s some_dir
4096 some_dir

Cependant, si je veux obtenir la somme de tous les fichiers contenant "count", la commande est insuffisante.

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

Pour contourner ce problème, je passe généralement la sortie par awk.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X