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 cela avec HDFS?

Avant 0,20.203, et officiellement déconseillé dans 2.6.0:

 hadoop fs -dus [directory] 

Depuis le 0,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.

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

Avec cela, vous aurez la taille en Go

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

S’étendant à Matt D et à d’autres réponses, la commande peut être effectuée jusqu’à Apache Hadoop 3.0.0-alpha4

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

Il affiche les tailles des fichiers et répertoires contenus dans le répertoire donné ou la longueur d’un fichier au cas où ce ne serait qu’un fichier.

Options:

  • L’option -s entraînera un résumé global des longueurs de fichiers affichées, plutôt que les fichiers individuels. Sans l’option -s, le calcul est effectué en allant à 1 niveau du chemin donné.
  • L’option -h formatera les tailles de fichiers d’une manière lisible par l’homme (par exemple, 64.0m au lieu de 67108864)
  • L’option -v affichera les noms des colonnes en tant que 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é.

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

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 un dossier spécifique:
sudo -u hdfs hadoop fs -du -h /user

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 l’ensemble du répertoire avec:

 hdfs dfs -du -s some_dir 4096 some_dir 

Cependant, si je veux la sum 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 cela, je passe généralement la sortie par awk.

 hdfs dfs -du some_dir/count* | aws '{ total+=$1 } END { print total }' 2048 

hadoop version 2.3.33:

 hadoop fs -dus /path/to/dir | awk '{print $2/1024**3 " G"}' 

entrer la description de l'image ici

Commande Devrait être hadoop fs -du -s -h \dirPath

  • -du [-s] [-h] …: indique la quantité d’espace, en octets, utilisée par les fichiers correspondant au modèle de fichier spécifié.

  • -s : Plutôt que de montrer la taille de chaque fichier individuel correspondant à la
    pattern, affiche la taille totale (résumé).

  • -h : Formate les tailles de fichiers d’une manière lisible par l’homme plutôt que par un nombre d’octets. (Ex MB / GB / TB, etc.)

    Notez que, même sans l’option -s, cela montre uniquement 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)