我想對 Amazon EMR 上 Apache Spark 應用程式中的階段故障進行疑難排解。
簡短描述
在 Spark 中,當處理 Spark 任務出現問題時,就會發生階段故障。這些故障可能是由硬體問題,Spark 組態不正確或程式碼問題引起的。發生階段故障時,Spark 驅動程式日誌會報告類似下列內容的例外狀況:
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: ...
解決方法
尋找原因代碼
對於使用 --deploy-mode client 提交的 Spark 任務,原因代碼在終端中顯示的例外狀況中。
對於使用 --deploy-mode cluster 提交的 Spark 任務,請在主節點上執行下列命令,以尋找 YARN 應用程式日誌中的階段故障。將 application_id 取代為您的 Spark 應用程式的 ID (例如,application_1572839353552_0008)。
yarn logs -applicationId application_id | grep "Job aborted due to stage failure" -A 10
您也可以從應用程式主容器中的 YARN ResourceManager 取得此資訊。
解決根本原因
找到例外狀況之後,使用下列其中一篇文章來解決根本原因: