Académique Documents
Professionnel Documents
Culture Documents
Merrouchi
Commandes Hadoop
I- Commandes Shell du système de fichiers pour HDFS
Les commandes du système de fichiers Hadoop sont exécutées en utilisant le script
bin/hdfs comme suit.
Le système de fichiers (FS) se réfère non seulement au HDFS mais aussi à d'autres systèmes
de fichiers supportés par Hadoop tels que Local FS et HFTP FS. Un chemin de répertoire HDFS peut
être spécifié en utilisant le préfixe hdfs://namenodehost ou le chemin relatif commençant par
le répertoire racine dans HDFS /. Les sections suivantes traitent de certaines des commandes
système de fichiers Hadoop les plus utilisées pour HDFS.
Si l'option -p est utilisée, tous les répertoires précédents du chemin du répertoire sont créés.
Par exemple, la commande suivante crée le répertoire /user/hadoop/dir1 et le répertoire
/dir2/dir3 y compris tous les répertoires dans le chemin du répertoire.
1
hdfs dfs -lsr <args>
La commande suivante liste tous les sous-répertoires et les fichiers qu'ils contiennent pour le
répertoire /dir1.
<localsrc> spécifie les fichiers locaux à mettre dans HDFS et <dst> spécifie la destination dans
HDFS. Par exemple, la commande suivante place localfile1 et localfile2 dans le répertoire
HDFS /user/hadoop/dir1.
Une commande synonyme est copyFromLocal, qui restreint la source au système de fichiers
local. L'option -f de copyFromLocal écrase la destination. La commande moveFromLocal est
également similaire à la commande put, à la différence près que le répertoire source local est
supprimé après copie.
La commande put renvoie 0 en cas de succès et -1 en cas d'erreur.
L'option -R rend les changements récursifs dans l'ensemble du système de fichiers. Récursivement
implique des sous-répertoires et des fichiers dans les sous-répertoires. L'utilisateur qui exécute la
commande doit être soit un super-utilisateur, soit le propriétaire du fichier/répertoire.
2
Par exemple, la commande suivante définit le groupe du répertoire /user/hadoop/dir1 et des
sous-répertoires et fichiers du répertoire et des sous-répertoires à hadoop. Le groupe
/user/hadoop/dir2/file1 est également défini sur hadoop.
L'option -R rend les changements récursifs dans l'ensemble du système de fichiers. Récursivement
implique des sous-répertoires et des fichiers dans les sous-répertoires. L'utilisateur qui exécute la
commande doit être soit un super-utilisateur, soit le propriétaire du fichier/répertoire.
Par exemple, la commande suivante modifie les permissions du fichier /file1 et du
répertoire /user/hadoop/dir2 à 700.
Le groupe propriétaire peut également être spécifié avec OWNER:GROUP. L'option -R rend les
changements récursifs dans l'ensemble du système de fichiers. Récursivement implique des sous-
répertoires et des fichiers dans les sous-répertoires. L'utilisateur qui exécute la commande doit
être soit un super-utilisateur, soit le propriétaire du fichier ou du répertoire.
Par exemple, la commande suivante définit le propriétaire du répertoire /user/hadoop/dir1 et
sous-répertoires et fichiers dans le répertoire et sous-répertoires à hadoop:hadoop. Le
propriétaire de /user/hadoop/dir2/file1 est également réglé sur hadoop:hadoop.
Un fichier.crc est créé dans le système de fichiers local pour la vérification de la somme de
contrôle. Par défaut, les fichiers qui échouent à la vérification de la somme de contrôle CRC ne
sont pas copiés. Pour copier les fichiers qui échouent à la vérification de la somme de contrôle,
incluez l'option - ignorecrc. L'option -crc copie également les fichiers.crc.
3
file1 dans le système de fichiers local.
Une commande synonyme est copyToLocal, qui limite la destination à la référence du fichier
local. La commande get peut également être utilisée pour copier de HDFS vers HDFS, bien qu'elle
ne soit pas conçue à cette fin. La commande get retourne 0 en cas de succès et -1 en cas d'erreur.
Ajouter à un fichier
La commande appendToFile est utilisée pour ajouter un ou plusieurs fichiers du système
de fichiers local ou stdin à un fichier HDFS et son utilisation est la suivante.
Par exemple, la commande suivante ajoute les fichiers locaux localfile1 et localfile2 au
fichier HDFS /user/hadoop/dir1/hadoopfile1.
La commande tail sort le dernier Ko d'un fichier vers stdout. L'utilisation de la commande est
la suivante.
L'option -f affiche les données ajoutées au fur et à mesure que le fichier grandit, comme sous
UNIX. Par exemple, la commande suivante édite le dernier Ko de file1 dans le répertoire racine du
HDFS.
4
Les options de commande sont présentées dans le tableau suivant:
Option Description
Les colonnes de sortie par défaut sont DIR_COUNT, FILE_COUNT, CONTENT_SIZE et FILE_NAME. Si
l'option -q est utilisée, les colonnes de sortie sont QUOTA, REMAINING_QUOTA, SPACE_QUOTA,
REMAINING_SPACE_QUOTA, DIR_ COUNT, FILE_COUNT, CONTENT_SIZE et FILE_NAME.
Par exemple, la commande suivante édite les colonnes CONTENT_SIZE et FILE_NAME pour /file1
dans HDFS et les colonnes DIR_COUNT, FILE_COUNT, CONTENT_SIZE et FILE_NAME pour /dir1
dans HDFS.
La commande stat énumère les statistiques sur un chemin de fichier ; son utilisation est la
suivante.
5
Déplacement de fichiers dans le HDFS
La commande mv est utilisée pour déplacer des fichiers dans HDFS et son utilisation est la
suivante.
Les fichiers sources sont supprimés après le déplacement vers la destination. La commande mv
renvoie 0 en cas de succès et -1 en cas d'erreur.
L'option -s permet d'agréger les tailles de fichier plutôt que de lister les tailles individuelles de
fichier. L'option -h formate les tailles dans un format lisible tel que 128M au lieu de 134217730.
Par exemple, la commande suivante liste la taille du fichier /user/hadoop/file1 et le fichier et
la taille du fichier pour le répertoire /user/hadoop/dir1.
6
L'option [-skipTrash] saute la corbeille et supprime les fichiers immédiatement, ce qui peut
être utile pour supprimer des fichiers d'un répertoire hors quota. Par exemple, la commande
suivante supprime /user/hadoop/dir1 dans HDFS et file1 dans /user/hadoop/dir2.
Si le répertoire à supprimer n'est pas vide, ajoutez l'option -f. L'option -f n'affiche pas de
message de diagnostic ou ne modifie pas l'état de sortie pour indiquer une erreur si le fichier
n'existe pas. Par exemple, vous pouvez supprimer le répertoire non vide /user/hadoop/dir1 avec
la commande suivante.
Pour supprimer des sous-répertoires récursivement, utilisez la commande -rm -r ou -rm -R,
qui a la syntaxe suivante.
La commande pour vider la corbeille est expunge et son utilisation est la suivante.
7
La commande dfsadmin -refreshNodes
La commande dfsadmin -refreshNodes met à jour le NameNode avec la liste des
DataNodes autorisés à se connecter au NameNode.
Le NameNode lit les noms d'hôtes des DataNode à partir des fichiers pointés par les paramètres
de configuration dfs.hosts et dfs.hosts.exclude dans le fichier hdfs site.xml. Le fichier indiqué dans
le paramètre dfs.hosts liste tous les hôtes autorisés à s'enregistrer avec le NameNode. Toutes les
entrées dans le fichier indiqué dans dfs.hosts.exclude pointent vers des DataNodes qui doivent
être déclassés (le déclassement est finalisé après que toutes les répliques du nœud qui est
déclassé ont été répliquées vers d'autres DataNodes). La commande à exécuter est:
Lorsque vous exécutez la commande dfsadmin -metasave, elle crée un fichier dans le
répertoire log de hadoop hdfs sur le serveur où vous avez exécuté la commande. Le fichier de
sortie contiendra les informations sur les blocs.
Vous pouvez placer le NameNode en mode sans échec avec la commande -safemode enter :
Enfin, vous pouvez sortir le NameNode du safemode avec la commande -safemode leave :
8
III- Quelques opérations de gestion du cluster Hadoop
Mettre hors service un DataNode
Il y a des situations où nous devons désactiver temporairement un DataNode du cluster,
par exemple, parce que l'espace de stockage du DataNode a été utilisé. Dans cette recette, nous
décrivons les étapes à suivre pour retirer un DataNode d'un cluster Hadoop vivant.
Connectez-vous au nœud maître à partir de l'ordinateur administrateur du cluster. Puis exécuter
les commandes suivantes:
<property>
<name>dfs.hosts.exclude</name>
<value>$HADOOP_HOME/conf/dfs-exclude.txt</value>
</property>
3- Forcez le NameNode pour recharger les DataNodes actifs en utilisant la commande suivante :
Le processus de mise hors service d'un DataNode peut prendre un certain temps, le temps
dépendant de la taille des disques durs. En effet, Hadoop doit répliquer les blocs de données HDFS
sur le nœud qui sera bientôt retiré vers d'autres nœuds du cluster. Vous pouvez vérifier l'état
d'avancement de cette opération en lançant la commande dfsadmin -report à intervalles
réguliers. Cette commande vous montrera les nœuds connectés au cluster.
Remarque: supprimez les informations sur les nœuds déclassés du fichier $HADOOP_CONF_
DIR/yarn.include, si vous utilisez le fichier yarn.include.
9
2- Rafraîchir le ResourceManager en exécutant la commande suivante :
3- Comme pour le DataNode, une fois la mise hors service du NodeManager est terminée, vous
êtes libre d'arrêter le nœud sur lequel le NodeManager était exécuté.
Remarque: pour exécuter ces instructions, il faut avoir les droits nécessaires.
10