Pourquoi mes applications Yarn dans Amazon EMR sont-elles toujours à l'état Accepté ?

Lecture de 5 minute(s)
0

Mes tâches Amazon EMR sont bloquées dans l'état Accepté et les journaux indiquent « WARN YarnScheduler : La tâche initiale n'a accepté aucune ressource ; vérifiez l'interface utilisateur de votre cluster pour vous assurer que les collaborateurs sont enregistrés et disposent de suffisamment de ressources ».

Brève description

Les tâches EMR restent bloquées dans l'état Accepté si le cluster ne dispose pas de suffisamment de ressources pour répondre à la demande de tâche. Cela peut se produire pour les raisons suivantes :

  • Le pourcentage YARNMemoryAvailablePercentage est très faible et de nombreux conteneurs sont en attente.
  • L'application ne peut pas démarrer un maître d'application en raison de ressources insuffisantes sur les nœuds principaux. Cela peut se produire sur Amazon EMR 5.19.0 et versions ultérieures, à l'exception de la série Amazon EMR 6.x.
  • Les nœuds principaux ne sont pas sains.
  • Une tâche EMR consomme toutes les ressources.

Solution

Le cluster ne dispose pas de ressources suffisantes pour répondre à la demande de travail

1.    Connectez-vous à l'interface utilisateur du gestionnaire de ressources ou utilisez la commande suivante depuis n'importe quel nœud pour vérifier les ressources :

yarn top 10

2.    Vérifiez si les ressources utilisées sont presque équivalentes aux ressources totales. Vous pouvez également consulter les métriques Amazon CloudWatch pour le YARNMemoryAvailablePercentage et le MemoryAvailableMB.

4.    Si nécessaire, augmentez la capacité du cluster. Vous pouvez utiliser le dimensionnement géré EMR ou le dimensionnement automatique pour augmenter ou réduire automatiquement de la capacité en fonction de l'utilisation des ressources.

Les ressources sur les nœuds principaux sont insuffisantes.

Sur EMR 5.19.0 et versions ultérieures, à l'exception de la série 6.0, le maître d'application s'exécute par défaut sur le nœud principal. Dans la série EMR 6.x, le maître d'application peut s'exécuter à la fois sur le nœud principal et le nœud de tâches.

En raison de l'augmentation du nombre de tâches soumises et de la diminution du nombre de nœuds principaux, les nœuds principaux ne peuvent pas attribuer un autre conteneur principal d'applications. Il se peut donc que la tâche soit bloquée même si les nœuds de tâches disposent de suffisamment de mémoire. Dans ce cas, le message suivant peut s'afficher dans les journaux du conteneur :

Application is Activated, waiting for resources to be assigned for AM. Last Node which was processed for the application : ip-xxxx:8041 ( Partition : [], Total resource :
<memory:516096, vCores:64>, Available resource : <memory:516096,vCores:64> ). Details : AM Partition = CORE ; Partition Resource =
<memory:516096, vCores:64> ; Queue's Absolute capacity = 100.0 % ; Queue's Absolute used capacity = 99.53497 % ; Queue's Absolute max capacity =100.0 %

Dans ce cas, résiliez les tâches pour libérer des ressources. Vous pouvez également ajouter d'autres nœuds principaux au cluster.

En outre, vous pouvez désactiver les étiquettes YARN dans Amazon EMR 5.x.

Les nœuds principaux ne sont pas sains

Si les nœuds principaux n'ont plus d'espace disque et que le point de montage utilise le disque à plus de 90 %, Amazon EMR considère que le nœud est défectueux. Les nouveaux conteneurs ne sont pas planifiés sur des nœuds défectueux. Dans ce cas, le message suivant apparaît dans les journaux du contrôleur de l'instance principale. Les journaux se trouvent dans /emr/instance-controller/log.

Yarn unhealthy Reason : 1/4 local-dirs usable space is below configured utilization percentage/no more usable space [ /mnt/yarn : used space above threshold of 90.0% ] ; 1/1 log-dirs usable space
is below configured utilization percentage/no more usable space [ /var/log/hadoop-yarn/containers : used space above threshold of 90.0% ]

Pour corriger les nœuds défectueux, réduisez l'utilisation du disque en supprimant les anciens journaux de conteneurs ou les journaux d'événements Spark. Vous pouvez également faire évoluer le stockage de manière dynamique en fonction de l'utilisation du disque.

Une tâche consomme toutes les ressources ou les paramètres Spark sont configurés au-delà des limites du cluster

L'allocation dynamique Spark est activée par défaut dans Amazon EMR. Si une tâche Spark n'est pas correctement configurée, elle risque de consommer toutes les ressources du cluster. Par exemple, cette erreur s'affiche si la limite du nombre maximum d'exécuteurs (spark.dynamicAllocation.maxExecutors) n'est pas suffisamment élevée. Pour les tâches Spark, ajustez les contraintes de mémoire afin d'éviter qu'une tâche ne consomme toutes les ressources du cluster.

L'acceptation de la tâche échoue si la mémoire de l'exécuteur ou celle du pilote sont supérieures aux paramètres configurés par Yarn. Les paramètres configurés par Yarn sont yarn.scheduler.maximum-allocation-mb et yarn.nodemanager.resource.memory-mb. Dans ce cas, un message d'erreur similaire au suivant s'affiche :

22/01/03 20:05:05 INFO Client: Verifying our application has not  requested more than the maximum memory capability of the cluster (24576 
MB per container)
Exception in thread "main" java.lang.IllegalArgumentException: Required executor memory (49152),overhead (6144 MB), and PySpark memory (0 MB) is above the max threshold
 (24576 MB) of this cluster! Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'.

Afin de corriger cette erreur, procédez comme suit :


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an