Wie kann ich Stufenausfälle in Spark-Aufträgen auf Amazon EMR beheben?

Lesedauer: 2 Minute
0

Ich möchte Stufenausfälle in Apache Spark-Anwendungen auf Amazon EMR beheben.

Kurzbeschreibung

Wenn bei einer Spark-Aufgabe ein Problem auftritt, treten möglicherweise Stufenausfälle auf. Stufenausfälle werden durch Hardwareprobleme, falsche Spark-Konfigurationen oder Codeprobleme verursacht. Wenn ein Stufenausfall auftritt, melden die Spark-Treiberprotokolle eine Ausnahme, die etwa wie folgt aussieht:

„org.apache.spark.SparkException: Job aborted due to stage failure: Task XXX in stage YYY failed 4 times, most recent failure: Lost task XXX in stage YYY (TID ZZZ, ip-xxx-xx-x-xxx.compute.internal, executor NNN): ExecutorLostFailure (executor NNN exited caused by one of the running tasks) Reason: (example-reason)“

Lösung

Identifizierung des Ursachencodes für Spark-Aufträge, die du mit dem Client „--deploy-mode“ absendest

Der Ursachencode befindet sich in der Ausnahme, die im Terminal angezeigt wird.

Wenn du den Auftrag über Amazon EMR-Schritte absendest, befindet sich der Ursachencode in der Datei stderr auf der Amazon EMR-Konsole. Du kannst die Protokolle des Schritts stderr auch vom Amazon Simple Storage Service (Amazon S3)-Speicherort abrufen, den du für die Cluster-Protokollierung angegeben hast. Du kannst beispielsweise den Dateipfad s3://example-log-bucket/example-cluster-id/steps/example-step-id/ verwenden, um die Protokolle zu finden.

Führe den folgenden Befehl auf dem Primärknoten aus, um Stufenausfälle in den YARN-Anwendungsprotokollen zu identifizieren:

yarn logs -applicationId example-application-id | grep "Job aborted due to stage failure" -A 10

Hinweis: Ersetze example-application-id durch deine Spark-Anwendungs-ID.

Du kannst die YARN-Anwendung vom Amazon S3-Speicherort abrufen, den du für die Cluster-Protokollierung angegeben hast. Du kannst beispielsweise den Dateipfad s3//example-log-bucket/example-cluster-id/containers/example-application-id/ verwenden. Du kannst die YARN-Anwendungsprotokolle auch vom YARN ResourceManager im Primärcontainer der Anwendung abrufen.

Die Grundursache beheben

Nachdem du die Ausnahme identifiziert hast, verwende einen der folgenden Artikel im AWS Knowledge Center, um das Problem zu lösen:

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 6 Monaten