Mes tâches Amazon EMR sont bloquées à 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 environnements de travail sont enregistrés et disposent de ressources suffisantes ».
Brève description
Les tâches EMR restent bloquées à l'état Accepté si le cluster ne dispose pas de ressources suffisantes pour répondre à la demande de tâche. Cela peut se produire pour les raisons suivantes :
- La valeur de 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 sont défectueux.
- Une tâche EMR consomme toutes les ressources.
Résolution
Le cluster ne dispose pas de ressources suffisantes pour répondre à la demande de tâche
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 YARNMemoryAvailablePercentage et MemoryAvailableMB.
4. Si nécessaire, augmentez la capacité au cluster. Vous pouvez utiliser Mise à l'échelle gérée EMR ou Auto Scaling pour ajouter ou réduire automatiquement la capacité en fonction de l'utilisation des ressources.
Les ressources des 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 les nœuds principaux et sur les nœuds de tâche.
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 allouer un autre conteneur de maître d'application. La tâche peut donc rester bloquée même si les nœuds de tâche disposent d’une mémoire suffisante. Dans ce cas, le message suivant peut s'afficher dans les journaux de 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, mettez fin aux 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 sont défectueux
Si les nœuds principaux sont à court d'espace disque et que le taux d'utilisation du disque du point de montage est supérieur à 90 %, Amazon EMR considère le nœud comme 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 conteneur ou les journaux d'événements Spark. Vous pouvez également mettre le stockage à l’échelle 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, vous obtenez cette erreur si la limite Exécuteurs max (spark.dynamicAllocation.maxExecutors) n'est pas suffisamment élevée. Pour les tâches Spark, réglez les contraintes de mémoire afin d'éviter qu'une tâche ne consomme toutes les ressources du cluster.
L'acceptation des tâches échoue si la mémoire de l'exécuteur ou de la mémoire du pilote est supérieure 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 message 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'.
Pour résoudre ce problème, procédez comme suit :