Comment vérifier la taille d'un répertoire HDFS?

97

Je connais du -shles systèmes de fichiers Linux courants. Mais comment faire cela avec HDFS?

Cheng
la source

Réponses:

163

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 -helppour plus d'informations et de détails.

Matt D
la source
19
-du -s (-dus est obsolète)
Carlos Rendon
69

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

Marius Soutier
la source
Pour les versions plus récentes de hdfs, hdfs -du -s -h /path/to/dirc'est plus approprié.
Adelson Araújo
26

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é.

Le du renvoie 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

mrsrinivas
la source
12

Avec cela, vous obtiendrez la taille en Go

hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
Dilshad
la source
1
hdfs dfs -du PATHTODIRECTORY | awk '/ ^ [0-9] + / {print int ($ 1 / (1024 3) "[GB] \ t" $ 2}' - Veuillez mettre à jour votre commande. Deux parenthèses fermantes après 1024 3. Cela ne devrait être que 1
gubs
2

Lorsque vous essayez de calculer le total d'un groupe particulier de fichiers dans un répertoire, l' -soption 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 
Grr
la source
1

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.

Harikrishnan Ck
la source
0

% 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

Oren Efron
la source
J'ai eu une erreur avec "hdfs", la façon dont cela a fonctionné pour moi était: hadoop fs -du -h /user (je n'avais pas besoin d'utiliser sudo)
diens
sudon'est pas nécessaire et doit être utilisé avec parcimonie.
Climbs_lika_Spyder
0

hadoop version 2.3.33:

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

entrez la description de l'image ici

LuciferJack
la source
0

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
J.Doe
la source
-1

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)

vijayraj34
la source
réponse en double
mrsrinivas