Warum haben meine Yarn-Anwendungen in Amazon EMR immer noch den Status Akzeptiert?

Lesedauer: 4 Minute
0

Meine Amazon-EMR-Aufgaben bleiben im Status Akzeptiert hängen und in den Protokollen wird „WARN YarnScheduler: Die erste Aufgabe hat keine Ressourcen akzeptiert; überprüfen Sie Ihre Cluster-Benutzeroberfläche, um sicherzustellen, dass Worker registriert sind und über ausreichende Ressourcen verfügen“.

Kurzbeschreibung

EMR-Aufgaben bleiben im Status Akzeptiert hängen, wenn der Cluster nicht über genügend Ressourcen verfügt, um die Aufgabenanfrage zu erfüllen. Dies kann aus den folgenden Gründen passieren:

  • Der YARNMemoryAvailablePercentage ist sehr niedrig und viele der Container stehen noch aus.
  • Die Anwendung kann einen Anwendungsmaster nicht starten, da die Ressourcen auf den Core-Knoten nicht ausreichen. Dies kann bei Amazon EMR 5.19.0 und höher auftreten, mit Ausnahme der Amazon-EMR-6.x-Serie.
  • Die Core-Knoten sind fehlerhaft.
  • Eine EMR-Aufgabe verbraucht alle Ressourcen.

Lösung

Der Cluster verfügt nicht über ausreichende Ressourcen, um die Aufgabenanfrage zu erfüllen

1.    Stellen Sie eine Verbindung zur Resource-Manager-Benutzeroberfläche her oder verwenden Sie den folgenden Befehl von einem beliebigen Knoten aus, um die Ressourcen zu überprüfen:

yarn top 10

2.    Prüfen Sie, ob die verwendeten Ressourcen fast den Gesamtressourcen entsprechen. Sie können auch die Amazon-CloudWatch-Metriken für YARNMemoryAvailablePercentage und MemoryAvailableMB überprüfen.

4.    Fügen Sie dem Cluster bei Bedarf mehr Kapazität hinzu. Sie können EMR Managed Scaling oder automatische Skalierung verwenden, um die Kapazität je nach Ressourcenauslastung automatisch zu erhöhen oder zu verringern.

Auf den Core-Knoten sind nicht genügend Ressourcen vorhanden.

Bei EMR 5.19.0 und höher, mit Ausnahme der 6.0-Serie, wird der Anwendungsmaster standardmäßig auf dem Core-Knoten ausgeführt. In der EMR-6.x-Serie kann der Anwendungsmaster sowohl auf dem Core- als auch auf dem Aufgabenknoten ausgeführt werden.

Aufgrund der erhöhten Anzahl übermittelter Aufgaben und der geringeren Anzahl von Core-Knoten können die Core-Knoten keinen weiteren Anwendungsmastercontainer zuweisen. Die Aufgabe könnte also stecken bleiben, obwohl die Aufgabenknoten über genügend Speicher verfügen. In diesem Fall wird möglicherweise die folgende Meldung in den Container-Protokollen angezeigt:

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 %

Beenden Sie in diesem Fall Aufgaben, um einige Ressourcen freizugeben. Oder fügen Sie dem Cluster weitere Core-Knoten hinzu.

Darüber hinaus können Sie YARN-Labels in Amazon EMR 5.x deaktivieren.

Die Core-Knoten sind fehlerhaft

Wenn den Core-Knoten der Festplattenspeicher ausgeht und der Mountpoint eine Festplattenauslastung von über 90 % aufweist, betrachtet Amazon EMR den Knoten als fehlerhaft. Neue Container werden nicht auf fehlerhaften Knoten eingeplant. In diesem Fall erscheint die folgende Meldung in den Controller-Protokollen der primären Instance. Die Protokolle befinden sich unter /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% ]

Um fehlerhafte Knoten zu korrigieren, reduzieren Sie die Festplattenauslastung, indem Sie alte Container-Protokolle oder Spark-Event-Protokolle entfernen. Sie können den Speicher auch dynamisch skalieren, basierend auf der Festplattenauslastung.

Eine Aufgabe verbraucht alle Ressourcen oder Spark-Parameter werden über die Cluster-Limits hinaus konfiguriert

Spark Dynamic Allocation ist in Amazon EMR standardmäßig aktiviert. Wenn eine Spark-Aufgabe nicht richtig konfiguriert ist, verbraucht die Aufgabe möglicherweise alle Ressourcen des Clusters. Diese Fehlermeldung wird beispielsweise angezeigt, wenn das Limit für Max Executors (spark.dynamicalLocation.MaxExecutors) nicht hoch genug ist. Passen Sie bei Spark-Aufgaben die Speicherbeschränkungen an, um zu vermeiden, dass eine Aufgabe alle Ressourcen des Clusters beansprucht.

Die Aufgabenannahme schlägt fehl, wenn der Executor-Speicher oder der Treiberspeicher mehr als die von Yarn konfigurierten Parameter sind. Die konfigurierten Yarn-Parameter sind yarn.scheduler.maximum-allocation-mb und yarn.nodemanager.resource.memory-mb. In diesem Fall wird eine Fehlermeldung ähnlich der folgenden angezeigt:

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'.

Gehen Sie wie folgt vor, um dieses Problem zu beheben:


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr