Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Comment désactiver Safemode pour le service NameNode sur mon cluster Amazon EMR ?
Le service NameNode passe en mode Safemode lorsque j'essaie d'exécuter une tâche Apache Hadoop ou Apache Spark sur un cluster Amazon EMR. J'ai désactivé le mode sécurisé, mais il est immédiatement réactivé.
Brève description
Lorsque vous exécutez une tâche Apache Hadoop ou Apache Spark sur un cluster Amazon EMR, l'un des messages d'erreur suivants peut s'afficher :
- « Cannot create file/user/test.txt._COPYING_. Name node is in safe mode. »
- « org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /user/hadoop/.sparkStaging/application_15########_0001. Le nœud Name est en mode sécurisé. Il a été activé manuellement. Utilisez « hdfs dfsadmin -safemode leave » pour désactiver le mode sécurisé. NamenodeHostName:ip-###-##-##-##.ec2.internal »
Safemode pour le NameNode est un mode en lecture seule pour le cluster du système de fichiers distribué Hadoop (HDFS). En Safemode, vous ne pouvez apporter aucune modification au système de fichiers ou aux blocs.
Une fois que les DataNodes signalent que la plupart des blocs du système de fichiers sont disponibles, le NameNode quitte automatiquement Safemode. Cependant, le NameNode peut passer à nouveau en Safemode pour les raisons suivantes :
- L'espace disponible est inférieur à l'espace requis pour le répertoire de stockage NameNode. Le paramètre dfs.namenode.resource.du.reserved définit l'espace requis pour le répertoire NameNode.
- Le NameNode ne peut pas charger FsImage et EditLog en mémoire.
- Le NameNode n'a pas reçu le rapport de blocage du DataNode.
- Certains nœuds du cluster sont peut-être en panne et les blocs des nœuds deviennent indisponibles.
- Certains blocs sont peut-être corrompus.
Recherchez la cause racine du problème à l'emplacement du journal NameNode, /var/log/hadoop-hdfs/.
Résolution
Avant de quitter Safemode, vérifiez que vous avez identifié la raison pour laquelle le NameNode est bloqué en Safemode. Vérifiez l'état de tous les DataNodes et des journaux NameNode.
Important : Dans certains cas, lorsque vous désactivez manuellement Safemode, vous risquez de perdre des données.
Pour désactiver manuellement Safemode, exécutez la commande suivante :
sudo -u hdfs hadoop dfsadmin -safemode leave
En fonction de la cause racine de l'erreur, effectuez une ou plusieurs des étapes de dépannage suivantes pour désactiver Safemode.
Passer à un cluster comportant plusieurs nœuds principaux
Le point de contrôle n'est pas automatique dans les clusters dotés d'un seul nœud principal. HDFS ne peut donc pas sauvegarder les journaux de modifications sur un nouvel instantané (FSImage) et les supprimer automatiquement. HDFS utilise des journaux d'édition pour enregistrer les modifications du système de fichiers entre les instantanés. Il est recommandé de supprimer manuellement les journaux d’édition d'un cluster comportant un seul nœud principal. Si vous ne supprimez pas manuellement les journaux d’édition, ceux-ci peuvent utiliser tout l'espace disque du répertoire /mnt. Pour résoudre ce problème, lancez un cluster avec plusieurs nœuds principaux. Les clusters comportant plusieurs nœuds principaux prennent en charge la haute disponibilité de HDFS NameNode.
Supprimer les fichiers inutiles de /mnt
Le paramètre dfs.namenode.resource.du.reserved spécifie l'espace disque minimum disponible pour /mnt. Lorsque la quantité d'espace disque disponible pour /mnt chute à une valeur inférieure à la valeur définie dans dfs.namenode.resource.du.reserved, le NameNode passe en Safemode. La valeur par défaut pour dfs.namenode.resource.du.reserved est de 100 Mo. Lorsque Safemode est activé, NameNode bloque toutes les modifications du système de fichiers et des blocs. Pour résoudre ce problème, vous devez supprimer les fichiers inutiles de /mnt.
Pour supprimer les fichiers dont vous n'avez plus besoin, procédez comme suit :
-
Consultez les journaux NameNode pour vérifier que le NameNode est en Safemode en raison d'un espace disque insuffisant. Si l'espace disque est suffisant, les journaux ressemblent à l'exemple suivant :
2020-08-28 19:14:43,540 WARN org.apache.hadoop.hdfs.server.namenode.NameNodeResourceChecker (org.apache.hadoop.hdfs.server.namenode.FSNamesystem$NameNodeResourceMonitor@5baaae4c): Space available on volume '/dev/xvdb2' is 76546048, which is below the configured reserved amount 104857600Si l'espace disque est insuffisant, les journaux ressemblent à l'exemple suivant :
2020-09-28 19:14:43,540 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem (org.apache.hadoop.hdfs.server.namenode.FSNamesystem$NameNodeResourceMonitor@5baaae4c): NameNode low on available disk space. Already in safe mode. -
Pour vérifier que le NameNode est toujours en Safemode, exécutez la commande suivante :
[root@ip-###-##-##-### mnt]# hdfs dfsadmin -safemode getSafe mode is ON -
Supprimez les fichiers inutiles de /mnt.Si le répertoire in/mnt/namenode/current utilise une grande quantité d'espace sur un cluster avec un nœud principal, créez un nouvel instantané (FsImage). Puis, supprimez les anciens journaux d'édition.
-
Vérifiez la quantité d'espace disque disponible dans /mnt. Si l'espace disponible est supérieur à 100 Mo, vérifiez à nouveau l'état de Safemode.
[hadoop@ip-###-##-##-### ~]$ hdfs dfsadmin -safemode getExemple de sortie :
Safe mode is ON -
Désactiver Safemode :
[hadoop@ip-###-##-##-### ~]$ hdfs dfsadmin -safemode leaveExemple de sortie :
Safe mode is OFF
Si /mnt dispose toujours de moins de 100 Mo d'espace disponible, effectuez une ou plusieurs des actions suivantes :
- Supprimez d'autres fichiers.
- Augmentez la taille du volume /mnt.
Supprimer d'autres fichiers
Procédez comme suit :
-
Accédez au répertoire /mnt :
cd /mnt -
Déterminez quels dossiers utilisent le plus d'espace disque :
sudo du -hsx * | sort -rh | head -10 -
Vérifiez les sous-dossiers les plus volumineux dans les dossiers qui utilisent le plus d'espace disque. Par exemple, si le dossier var utilise une grande quantité d'espace disque, vérifiez les sous-dossiers les plus volumineux de var :
cd varsudo du -hsx \* | sort -rh | head -10 -
Supprimez d'abord les fichiers les plus volumineux. Assurez-vous de ne supprimer que les fichiers dont vous n'avez plus besoin. Le compartiment de journalisation Amazon S3 stocke déjà des copies de sauvegarde des fichiers journaux compressés depuis /mnt/var/log/hadoop-hdfs/ et /mnt/var/log/hadoop-yarn/. Vous pouvez supprimer ces fichiers journaux en toute sécurité.
-
Après avoir supprimé les fichiers inutiles, vérifiez à nouveau l'état de Safemode. Puis, désactivez Safemode :
[hadoop@ip-###-##-##-### ~]$ hdfs dfsadmin -safemode getExemple de sortie :
Safe mode is ON -
Désactiver Safemode :
[hadoop@ip-###-##-##-### ~]$ hdfs dfsadmin -safemode leaveExemple de sortie :
Safe mode is OFF
Vérifiez la présence de blocs et de fichiers corrompus ou manquants
Procédez comme suit :
- Pour vérifier l'état du cluster, exécutez la commande suivante :
Remarque : Le rapport de sortie indique également le pourcentage de blocs sous-répliqués et le nombre de réplicas manquants.hdfs fsck / - Pour localiser le DataNode pour chaque bloc du fichier, exécutez la commande suivante pour chaque fichier de la liste :
Remarque : Remplacez example_file_name par votre nom de fichier.hdfs fsck example_file_name -locations -blocks -files
Exemple de sortie :
L'exemple de sortie précédent montre quel DataNode stocke le bloc. Par exemple, 192.168.0.2. Vous pouvez consulter les journaux du DataNode pour détecter toute erreur liée à l'ID de bloc spécifique (blk_##).0. BP-762523015-192.168.0.2-1480061879099:blk_1073741830_1006 len=134217728 MISSING! 1. BP-762523015-192.168.0.2-1480061879099:blk_1073741831_1007 len=134217728 MISSING! 2. BP-762523015-192.168.0.2-1480061879099:blk_1073741832_1008 len=70846464 MISSING!
Remarque : Les blocs manquants se produisent souvent parce que les nœuds sont résiliés de manière inattendue. - Pour supprimer les fichiers endommagés, quittez Safemode et exécutez la commande suivante :
Remarque : Remplacez example_file_name par votre nom de fichier.hdfs dfs -rm example_file_name
Utilisez les métriques CloudWatch pour surveiller l'état du HDFS
Utilisez les métriques Amazon CloudWatch suivantes pour identifier les raisons pour lesquelles le NameNode passe en Safemode :
- Pour identifier le pourcentage de stockage HDFS utilisé, consultez la section HDFSUtilization.
- Pour identifier le nombre de blocs dans lesquels HDFS ne possède aucun réplica, consultez MissingBlocks. Il peut s'agir de blocs corrompus.
- Pour identifier le nombre de blocs nécessitant une réplication, consultez la section UnderReplicatedBlocks.
Informations connexes
Guide de l'utilisateur de HDFS (depuis le site Web d'Apache Hadoop)
- Sujets
- Analytics
- Balises
- Amazon EMR
- Langue
- Français

Contenus pertinents
- demandé il y a 3 ans
- demandé il y a un an
AWS OFFICIELA mis à jour il y a 4 mois