Mesure et Compréhension des Tailles de Fichiers dans Hadoop HDFS

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.

Étiquettes: Hadoop hdfs fsck hadoop fs Disk Usage

Publié le 19 juin à 05h26