web-dev-qa-db-fra.com

La façon de vérifier la taille d'un répertoire HDFS?

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

70
Cheng

Avant la version.20.203 et officiellement obsolète en 2.6.0:

hadoop fs -dus [directory]

Puisque 20.20.203 (lien mort) 1.0.4 et toujours compatible via 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.

134
Matt D

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

52
Marius Soutier

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

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

Il affiche la taille des fichiers et des répertoires contenus dans le répertoire indiqué ou la longueur d’un fichier s’il s’agit d’un fichier.

Options:

  • L'option -s entraînera l'affichage d'un résumé agrégat de la longueur des fichiers, plutôt que des fichiers individuels. Sans l'option -s, le calcul est effectué en descendant d'un niveau à partir du chemin donné.
  • L'option -h formatera les tailles de fichier de manière lisible par l'homme (par exemple, 64,0 m au lieu de 67108864) 
  • L'option -v affichera les noms des colonnes sous la forme d'une ligne d'en-tête. 
  • L'option -x permettra de 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 de tous les instantanés sous le chemin donné. 

Le 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: Apache doc

13
mrsrinivas

Avec cela, vous aurez la taille en Go

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

% d'espace utilisé sur le cluster Hadoop
Sudo -u hdfs hadoop fs –df

Capacité sous dossier spécifique:
Sudo -u hdfs hadoop fs -du -h /user

1
Oren Efron

Pour obtenir la taille du répertoire hdfs, vous pouvez utiliser dfs -du -s -h/$ YourDirectoryName . hdfs dfsadmin -report peut être utilisé pour afficher un rapport de stockage rapide au niveau du cluster. 

1
Harikrishnan Ck

Lorsque vous essayez de calculer le total d'un groupe de fichiers particulier dans un répertoire, l'option -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 Ko. Vous pouvez résumer tout le répertoire avec:

hdfs dfs -du -s some_dir
4096 some_dir

Cependant, si je veux 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 résoudre ce problème, je passe généralement la sortie à travers 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>

info de la page de manuel:

-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