Dans un cluster E-MapReduce (EMR), exécutez les commandes hadoop fs pour effectuer des opérations sur le système de fichiers distribués Hadoop (HDFS).
Prérequis
Avant de commencer, assurez-vous d'avoir :
Accès au cluster : Connectez-vous à un nœud du cluster (généralement le nœud maître) via Secure Shell (SSH)
Autorisations utilisateur : Un compte disposant des autorisations de lecture et d'écriture pour le chemin HDFS de destination, tel que l'utilisateur par défaut
hadoop. Pour les clusters avec authentification Kerberos activée, effectuez d'abord l'authentification d'identité
Versions de commande
Hadoop propose deux formats de commande équivalents pour les opérations sur le système de fichiers :
hdfs dfs <args>: Spécifique à HDFS.hadoop fs <args>: Une commande générique pour les systèmes de fichiers qui fonctionne avec HDFS et d'autres systèmes compatibles avec Hadoop, y compris le système de fichiers local (file:///).
Tous les exemples de cette rubrique utilisent hadoop fs.
Aide-mémoire des commandes
Le tableau suivant répertorie les commandes HDFS les plus courantes.
|
Commande |
Description |
Syntaxe |
|
Crée un répertoire dans HDFS. |
|
|
|
Crée un fichier vide (0 octet) dans HDFS. |
|
|
|
Répertorie les fichiers et répertoires d'un chemin avec leurs métadonnées. |
|
|
|
Télécharge des fichiers du système de fichiers local vers HDFS. |
|
|
|
Télécharge des fichiers ou répertoires de HDFS vers le système de fichiers local. |
|
|
|
Copie des fichiers ou répertoires au sein de HDFS. |
|
|
|
Déplace ou renomme des fichiers ou répertoires au sein de HDFS. |
|
|
|
Supprime des fichiers ou répertoires dans HDFS. |
|
|
|
Affiche le contenu d'un fichier HDFS sur stdout. |
|
|
|
Affiche la taille d'un fichier ou la taille totale des fichiers d'un répertoire. |
|
Pour obtenir la référence complète des commandes, consultez la documentation Apache Hadoop FileSystem Shell.
Gestion des répertoires et des fichiers
mkdir : Créer un répertoire
Crée un répertoire dans HDFS.
Syntaxe
hadoop fs -mkdir [-p] <paths>
Options
| Option | Description |
|---|---|
-p |
Crée les répertoires parents du chemin s'ils n'existent pas, à l'instar de mkdir -p sous Linux. Utilisez cette option en production pour éviter les erreurs lorsqu'un répertoire parent est manquant. |
Exemple
Créez le répertoire /dir :
hadoop fs -mkdir /dir
touchz : Créer un fichier vide
Crée un fichier vide (0 octet) dans HDFS. Utilisations courantes :
En tant que fichier marqueur pour signaler qu'une tâche est terminée
Pour créer un fichier de sortie vide avant le traitement des données
Syntaxe
hadoop fs -touchz URI [URI ...]
Exemple
Créez emptyfile.txt dans /dir/ :
hadoop fs -touchz /dir/emptyfile.txt
ls : Répertorier les fichiers et répertoires
Répertorie les fichiers et répertoires d'un chemin, ainsi que les autorisations, le facteur de réplication, le propriétaire, le groupe, la taille et l'heure de modification.
Syntaxe
hadoop fs -ls [-h] [-R] [-t] <args>
Options
| Option | Description |
|---|---|
-h |
Affiche les tailles de fichier dans un format lisible (par exemple, 1K, 234M, 2G). |
-R |
Répertorie récursivement le contenu de tous les sous-répertoires. |
-t |
Trie la sortie par heure de modification, les plus récents en premier. |
Exemple
Répertoriez le contenu de /dir :
hadoop fs -ls /dir
Transfert de fichiers
put : Télécharger des fichiers vers HDFS
Copie un ou plusieurs fichiers depuis le système de fichiers local (sur le nœud EMR où la commande est exécutée) vers HDFS.
Syntaxe
hadoop fs -put [-f] [-p] <localsrc> <dst>
Options
| Option | Description |
|---|---|
-f |
Écrase le fichier de destination s'il existe déjà. |
-p |
Conserve l'heure d'accès, l'heure de modification, la propriété et les autorisations du fichier. |
Exemple
Téléchargez hello.txt vers /dir/sub-dir dans HDFS :
hadoop fs -put hello.txt /dir/sub-dir
get : Télécharger des fichiers depuis HDFS
Copie des fichiers ou répertoires depuis HDFS vers le système de fichiers local (sur le nœud EMR où la commande est exécutée).
Syntaxe
hadoop fs -get [-f] [-p] <src> <localdst>
Options
| Option | Description |
|---|---|
-f |
Écrase le fichier de destination s'il existe déjà. |
-p |
Conserve l'heure d'accès, l'heure de modification, la propriété et les autorisations du fichier. |
Exemple
Téléchargez /dir/emptyfile.txt depuis HDFS vers le chemin local / :
hadoop fs -get /dir/emptyfile.txt /
Opérations sur les fichiers
cp : Copier des fichiers ou répertoires
Copie des fichiers ou répertoires au sein de HDFS.
Syntaxe
hadoop fs -cp [-f] URI [URI ...] <dest>
Options
| Option | Description |
|---|---|
-f |
Écrase le fichier de destination s'il existe déjà. |
Exemple
Copiez hello_world.txt depuis /dir/sub-dir/ vers /tmp :
hadoop fs -cp /dir/sub-dir/hello_world.txt /tmp
mv : Déplacer ou renommer des fichiers ou répertoires
Déplace ou renomme des fichiers ou répertoires au sein de HDFS. Il s'agit d'une opération atomique : lors d'un déplacement au sein du même système de fichiers, seules les métadonnées sont mises à jour, et non les blocs de données sous-jacents, ce qui permet une exécution rapide de l'opération.
Syntaxe
hadoop fs -mv URI [URI ...] <dest>
Exemples
Déplacez hello_world2.txt depuis /tmp/ vers /dir/sub-dir/ :
hadoop fs -mv /tmp/hello_world2.txt /dir/sub-dir/
Déplacez le répertoire test depuis /tmp/ vers /dir/sub-dir/ :
hadoop fs -mv /tmp/test /dir/sub-dir/
rm : Supprimer des fichiers ou répertoires
Supprime des fichiers ou répertoires dans HDFS. Par défaut, les éléments supprimés sont déplacés vers la corbeille de l'utilisateur actuel située dans /user/<username>/.Trash/.
Syntaxe
hadoop fs -rm [-f] [-r] [-skipTrash] URI [URI ...]
Options
| Option | Description |
|---|---|
-r |
Supprime récursivement un répertoire et tout son contenu. Obligatoire lors de la suppression d'un répertoire. |
-f |
Supprime les messages d'erreur si le fichier ou répertoire spécifié n'existe pas. |
-skipTrash |
Supprime définitivement le fichier ou répertoire, en contournant la corbeille. À utiliser avec prudence — cette action est irréversible. |
La commande hadoop fs -rmr est obsolète. Utilisez hadoop fs -rm -r pour supprimer des répertoires de manière récursive.
Exemple
Supprimez hello_world2.txt depuis /dir/sub-dir/ :
hadoop fs -rm /dir/sub-dir/hello_world2.txt
Affichage des fichiers
cat : Afficher le contenu d'un fichier
Affiche le contenu d'un fichier HDFS sur stdout. Passez plusieurs URI pour les concaténer.
Syntaxe
hadoop fs -cat URI [URI ...]
Exemples
Affichez le contenu de /hello.txt :
hadoop fs -cat /hello.txt
Affichez le contenu de /dir/sub-dir/hello_world.txt :
hadoop fs -cat /dir/sub-dir/hello_world.txt
du : Afficher la taille d'un fichier ou répertoire
Affiche la taille d'un fichier ou la taille de chaque fichier contenu dans un répertoire.
Syntaxe
hadoop fs -du [-s] [-h] URI [URI ...]
Options
| Option | Description |
|---|---|
-s |
Affiche la taille totale agrégée au lieu d'une ventilation par fichier. |
-h |
Affiche les tailles dans un format lisible (par exemple, 1K, 234M, 2G). |
Exemples
Affichez la taille de /hello.txt :
hadoop fs -du /hello.txt
Affichez la taille totale de tous les fichiers dans /dir :
hadoop fs -du /dir
Dépannage
Permission denied
L'utilisateur actuel ne dispose pas des autorisations de lecture, d'écriture ou d'exécution sur le chemin cible.
Vérifiez les autorisations du fichier ou de son répertoire parent :
hdfs dfs -ls <parent_dir>
Demandez ensuite à un administrateur d'accorder les autorisations nécessaires en utilisant chmod ou chown. Si Kerberos est activé, assurez-vous de disposer d'un ticket Kerberos valide en exécutant kinit avant de réessayer.
SafeModeException : NameNode is in safe mode
Le NameNode entre en mode sécurisé au démarrage et rejette les opérations d'écriture pendant cette période. Attendez quelques minutes qu'il en sorte automatiquement. Vérifiez l'état actuel avec :
hdfs dfsadmin -safemode get
Ne forcez pas la sortie du mode sécurisé sauf en cas d'urgence.
No such file or directory
Le chemin spécifié n'existe pas. Vérifiez s'il y a des fautes de frappe dans le chemin. Si vous écrivez dans un fichier, assurez-vous d'abord que le répertoire parent existe — utilisez hadoop fs -mkdir -p <parent_dir> pour le créer.
StandbyException : Operation category READ is not supported in state standby
Dans une configuration haute disponibilité (HA), une demande a été routée vers un NameNode en état de veille. Vérifiez core-site.xml et confirmez que fs.defaultFS pointe vers le nom HA NameService (par exemple, hdfs://mycluster) plutôt que vers un nom d'hôte NameNode spécifique.
Étapes suivantes
Pour l'administration des clusters HA, consultez les commandes de haute disponibilité HDFS (HaAdmin).
Pour migrer des données entre des clusters Hadoop ou entre HDFS et Object Storage Service (OSS), consultez Hadoop DistCp.