Comment éliminer l’erreur « Exit status : -100. Diagnostics: Container released on a *lost* node » (Statut de sortie : -100. Diagnostic : conteneur lancé sur un nœud *perdu*) dans Amazon EMT) ?

Date de la dernière mise à jour : 09/12/2019

Ma tâche Amazon EMR échoue avec un message d’erreur similaire à ce qui suit :

ExecutorLostFailure (executor 12 exited caused by one of the running tasks) Reason: Container marked as failed: container_1572839353552_0008_01_000002 on host: ip-xx-xxx-xx-xx Exit status: -100. Diagnostics: Container released on a *lost* node

Que signifie cette erreur et comment l’éliminer ?

Brève description

Cette erreur se produit généralement lorsqu’un nœud principal ou de tâche est arrêté en raison d’une utilisation élevée de l’espace disque, ou lorsqu’un nœud ne répond plus en raison d’une utilisation élevée de l’UC prolongée ou d’une faible quantité de 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.

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 plus de volumes EBS à un cluster en cours d’exécution :

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.