Comment puis-je résoudre l'erreur « Statut de sortie : -100. Diagnostic : conteneur lancé sur un nœud *perdu* » dans Amazon EMR ?

Date de la dernière mise à jour : 21/07/2021

Ma tâche Amazon EMR échoue avec un message d'erreur similaire au suivant :

ExecutorLostFailure (l'exécuteur 12 a été quitté par l'une des tâches en cours d'exécution) Raison : conteneur marqué comme ayant échoué : container_1572839353552_0008_01_000002 sur l'hôte : ip-xx-xxx-xx-xx État de sortie ፦100. Diagnostic : conteneur lancé sur un nœud *perdu*

Brève description

Cette erreur survient généralement dans l'une des situations suivantes :

  • Un nœud principal ou un nœud de tâche est résilié en raison d'une utilisation élevée de l'espace disque.
  • Un nœud ne répond plus en raison d'une utilisation prolongée du processeur ou de l'insuffisance de l'espace mémoire disponible.

Cet article porte sur les problèmes d'espace disque.

Lorsque l'utilisation d'un disque de nœud principal ou de tâche (par exemple, /mnt ou/mnt1) dépasse 90 %, le disque est considéré comme non sain. Si moins de 25 % des disques d'un nœud sont sains, YARN ResourceManager met le nœud hors service normalement. Pour résoudre ce problème, augmentez la capacité Amazon Elastic Block Store (Amazon EBS) au cluster EMR. Vous pouvez le faire lorsque vous lancez un nouveau cluster ou en modifiant un cluster en cours d’exécution.

Résolution

Déterminer la cause racine

Pour déterminer la cause racine, vérifiez les métriques Amazon CloudWatch suivantes du cluster EMR:

  • MR unhealty nodes (Nœuds MR non sains) : si cette métrique indique un nœud non sain, le problème est provient d'un manque d'espace disque.
  • MR lost nodes (Noeuds perdus MR) : si cette métrique indique un nœud perdu, cela indique qu'un nœud a été perdu en raison d'une défaillance matérielle ou parce que le nœud n'a pas pu être atteint en raison d'une utilisation élevée de l'UC ou de la mémoire.

Utilisez l'une des options suivantes pour résoudre les erreurs de nœud perdus qui sont causées par un manque d'espace disque.

Nouveaux clusters : Ajouter de la capacité EBS

Pour ajouter de la capacité EBS lorsque vous lancez un cluster EMR, choisissez un type d'instance Amazon Elastic Compute Cloud (Amazon EC2) plus grand. Les instances EC2 de plus grandes tailles offrent une plus grande capacité de stockage EBS. Pour plus d’informations, consultez Stockage EBS par défaut des instances. (Vous pouvez également modifier la taille du volume ou ajouter des volumes lorsque vous créez le cluster, quel que soit le type d'instance que vous choisissez.)

Clusters nouveaux ou en cours d’exécution : Ajouter des principaux ou de tâches

Clusters en cours d'exécution : ajouter des volumes EBS

Pour attacher d'autres volumes EBS à un cluster en cours d'exécution, procédez comme suit :

1.    Si des volumes EBS plus grands ne résolvent pas le problème, attachez plus de volumes EBS aux nœuds principaux et de tâches.

2.    Formatez et montez les volumes attachés. Veillez à utiliser le numéro de disque correct (par exemple, /mnt1 ou /mnt2 au lieu de /data).

3.    Connectez-vous au nœud à l’aide de SSH.

4.    Ajoutez le chemin /mnt1/yarn dans la propriété yarn.nodemanager.local-dirs de /etc/hadoop/conf/yarn-site.xml. Exemple :

<property>
    <name>yarn.nodemanager.local-dirs</name>
    <value>/mnt/yarn,/mnt1/yarn</value>
</property>

5.    Redémarrez le service NodeManager :

sudo stop hadoop-yarn-nodemanager
sudo start hadoop-yarn-nodemanager

6.    Activez la protection contre la résiliation.

Si vous rencontrez toujours des problèmes d’espace disque, essayez ce qui suit :

  • Supprimez les fichiers inutiles.
  • Augmentez le seuil d’utilisation du disque de 90 % à 99 %. Pour ce faire, modifiez la propriété yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage dans yarn-default.xml sur tous les noeuds. Ensuite, redémarrez le service hadoop-yarn-nodemanager.