Ich möchte Phasenfehler in Apache Spark-Anwendungen auf Amazon EMR beheben.
Kurzbeschreibung
In Spark treten Phasenfehler auf, wenn bei der Verarbeitung einer Spark-Aufgabe ein Problem auftritt. Diese Fehler können durch Hardwareprobleme, falsche Spark-Konfigurationen oder Codeprobleme verursacht werden. Wenn ein Phasenfehler 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: ...
Behebung
Den Ursachencode finden
Bei Spark-Jobs, die mit dem**--deploy-mode-Client**eingereicht wurden, befindet sich der Ursachencode in der Ausnahme, die im Terminal angezeigt wird.
Führen Sie für Spark-Jobs, die mit dem Cluster--deploy-mode übermittelt wurden, den folgenden Befehl auf dem Hauptknoten aus, um in den YARN-Anwendungsprotokollen nach Phasenfehlern zu suchen. Ersetzen Sie application_id durch die ID Ihrer Spark-Anwendung (z. B. application_1572839353552_0008).
yarn logs -applicationId application_id | grep "Job aborted due to stage failure" -A 10
Sie können diese Informationen auch vom YARN ResourceManager im Hauptcontainer der Anwendung abrufen.
Die Grundursache beheben
Nachdem Sie die Ausnahme gefunden haben, verwenden Sie einen der folgenden Artikel, um die Grundursache zu beheben: