Réponses:
Avant la version 0.20.203 et officiellement obsolète dans la version 2.6.0:
hadoop fs -dus [directory]
Depuis 0.20.203 (lien mort) 1.0.4 et toujours compatible jusqu'à 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.
hadoop fs -du -s -h /path/to/dir
affiche la taille d'un répertoire sous une forme lisible.
hdfs -du -s -h /path/to/dir
c'est plus approprié.
S'étendant à 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 la taille des fichiers et des répertoires contenus dans le répertoire donné ou la longueur d'un fichier au cas où il ne s'agirait que d'un fichier.
Options:
- L' option -s entraînera l' affichage d' un résumé agrégé des longueurs de fichier , plutôt que des fichiers individuels. Sans l'option -s, le calcul est effectué en allant d'un niveau à partir du chemin donné.
- L' option -h formatera la taille des fichiers 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 forme de ligne d'en-tête.
- L' option -x exclura 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 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 obtiendrez la taille en Go
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
Lorsque vous essayez de calculer le total d'un groupe particulier de fichiers dans un répertoire, l' -s
option 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 échoue.
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 via awk.
hdfs dfs -du some_dir/count* | awk '{ total+=$1 } END { print total }'
2048
Pour obtenir la taille du répertoire, hdfs dfs -du -s -h / $ yourDirectoryName peut être utilisé. hdfs dfsadmin -report peut être utilisé pour afficher un rapport de stockage rapide au niveau du cluster.
% 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
hadoop fs -du -h /user
(je n'avais pas besoin d'utiliser sudo
)
sudo
n'est pas nécessaire et doit être utilisé avec parcimonie.
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
La commande devrait être hadoop fs -du -s -h \dirPath
-du [-s] [-h] ...: Affiche la quantité d'espace, en octets, utilisée par les fichiers qui correspondent au modèle de fichier spécifié.
-s : Plutôt que d'afficher la taille de chaque fichier individuel qui correspond au
modèle, affiche la taille totale (résumé).
-h : Formate la taille des fichiers de manière lisible par l'homme plutôt qu'un certain nombre d'octets. (Ex Mo / Go / To, etc.)
Notez que, même sans l'option -s, cela n'affiche que les résumés de taille d'un niveau dans un répertoire.
La sortie est dans le nom de la taille du formulaire (chemin complet)