Je connais du -sh
dans les systèmes de fichiers Linux courants. Mais comment faire avec HDFS?
hadoop fs -du -s -h /path/to/dir
affiche la taille d'un répertoire sous forme lisible.
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é.
+-------------------------------------------------------------------+
| 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
Code de sortie: renvoie 0 en cas de succès et -1 en cas d'erreur.
Avec cela, vous aurez la taille en Go
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
% d'espace utilisé sur le cluster HadoopSudo -u hdfs hadoop fs –df
Capacité sous dossier spécifique:Sudo -u hdfs hadoop fs -du -h /user
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.
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
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