La gestion de l'espace de stockage est cruciale dans tout système de fichiers distribué. Hadoop HDFS (Hadooop Distributed File System) offre plusieurs commandes pour inspecter la taille des fichiers et répertoires, chacune présentant des particularités en termes d'informations fournies et de performance. Cet article explore les commandes clés et démystifie les concepts d'espace logique et physique.
Consultation des Tailles avec hadoop fs -du
La commande hadoop fs -du (disk usage) permet d'afficher la taille de tous les fichiers à l'intérieur d'un répertoire donné, ou la taille d'un fichier spécifique s'il est désigné directement. Elle est utile pour une inspection rapide de l'occupation d'espace.
hadoop fs -du URI [URI ...]
Exemple d'utilisation :
hadoop fs -du /data/utilisateur/rapports /data/logs/application.log
hdfs://monCluster:8020/archive/anciensFichiers
Cette commande retourne la taille de chaque fichier ou le total agrégé pour chaque répertoire spécifié. Un code de retour de 0 indique le succès de l'opération, tandis que -1 signale un échec.
Résumé des Tailles avec hadoop fs -dus
La commande hadoop fs -dus (disk usage summary) est conçue pour afficher la taille totale d'un fichier ou d'un répertoire de manière sommaire. Contrairement à -du qui liste chaque élément, -dus fournit une taille consolidée pour le chemin spécifié.
hadoop fs -dus <args>
L'option -h est souvent employée pour améliorer la lisibilité des résultats en convertissant les octets en unités plus appropriées (par exemple, Ko, Mo, Go) :
hadoop fs -dus -h /chemin/vers/un/grandRepertoire
Avantages en performance : Pour l'analyse d'un grand volume de chemins, -dus se révèle généralement plus performant que -du. Des benchmarks comparatifs sur des dizaines de milliers de répertoires ont démontré que -dus peut réduire significativement le temps d'exécution global.
Différenciation : Espace Logique et Espace Physique dans HDFS
Lors de l'évaluation de l'utilisation du stockage dans HDFS, il est crucial de comprendre la distinction entre deux mesures d'espace :
- L'Espace Logique : C'est la taille fondamentale des données du fichier, sans tenir compte des copies supplémentaires. C'est la taille que vous verriez sur un système de fichiers classique.
- L'Espace Physique : Il représente l'occupation réelle sur l'ensemble des DataNodes HDFS, incluant toutes les répliques des blocs de données.
La raison de cette différence réside dans le mécanisme de réplication de HDFS, qui crée des copies multiples (souvent trois) de chaque bloc pour la résilience et la disponibilité. La relation est exprimée par la formule suivante :
Espace Physique Total = Espace Logique Total × Facteur de Réplication des Blocs
Interprétation de l'Espace Logique via hadoop fsck et hadoop fs -dus
Les commandes d'inspection comme hadoop fsck et hadoop fs -dus rapportent systémtaiquement l'espace logique consommé par les fichiers et répertoires.
Exemple de sortie avec hadoop fsck :
$ hadoop fsck /data/archives_logs
Total size: 19500000000000 B <=== Taille logique agrégée
Total dirs: 4700
Total files: 500000
Total blocks (validated): 580000 (avg. block size 33620689 B)
Minimally replicated blocks: 580000 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 3
Average block replication: 3.0
Corrupt blocks: 0
Missing replicas: 0 (0.0 %)
Number of data-nodes: 22
Number of racks: 1
FSCK ended at Mon Dec 18 14:45:00 CET 2023 in 9200 milliseconds
The filesystem under path '/data/archives_logs' is HEALTHY
Dans cet extrait, la "Total size" de 19500000000000 B correspond à la taille logique des données. Si le facteur de réplication par défaut est de 3, l'espace physique réellement occupé serait de 19500000000000 × 3 = 58500000000000 B.
Exemple de sortie avec hadoop fs -dus :
$ hadoop fs -dus /data/archives_logs
hdfs://nomPrincipal:8020/data/archives_logs 19500000000000
La valeur numérique retournée par -dus confirme également la taille logique des données.
Exploration Détaillée de l'Espace avec hadoop fs -count -q
Pour une vision exhaustive de l'utilisation de l'espace, y compris les quotas et l'espace physique, la commande hadoop fs -count -q est l'outil privilégié, notamment pour les administrateurs HDFS.
$ hadoop fs -count -q /data/archives_logs
QUOTA REMAINING_QUOTA SPACE_QUOTA REMAINING_SPACE_QUOTA DIR_COUNT FILE_COUNT CONTENT_SIZE FILE_NAME
none inf 65000000000000 58500000000000 4700 500000 19500000000000 hdfs://nomPrincipal:8020/data/archives_logs
La sortie de fs -count -q est organisée en plusieurs colonnes, chacune apportant des informations spécifiques :
| Colonne | Description |
|---|---|
QUOTA |
Limite maximale du nombre de fichiers et répertoires autorisés pour ce chemin (quota d'espcae de noms). |
REMAINING_QUOTA |
Nombre de fichiers et répertoires pouvant encore être créés sous ce quota. |
SPACE_QUOTA |
Limite maximale de l'espace physique total (en octets) que ce chemin peut consommer. |
REMAINING_SPACE_QUOTA |
Quantité d'espace physique restant disponible avant d'atteindre le quota. |
DIR_COUNT |
Nombre total de répertoires enfants présents sous ce chemin. |
FILE_COUNT |
Nombre total de fichiers présents sous ce chemin. |
CONTENT_SIZE |
Taille logique totale des données (en octets) des fichiers sous ce chemin. Cette valeur est identique à celle rapportée par fsck et -dus. |
FILE_NAME |
Le chemin complet du répertoire ou du fichier qui a été analysé. |
Il est crucial de retenir que la colonne CONTENT_SIZE indique l'espace logique. L'espace physique réel utilisé, qui est comparé à SPACE_QUOTA, est le résultat de CONTENT_SIZE multiplié par le facteur de réplication des blocs.