如何對 Amazon EMR 上 Spark 工作的階段失敗進行疑難排解?

1 分的閱讀內容
0

我想對 Amazon EMR 上 Apache Spark 應用程式中的階段故障進行疑難排解。

簡短說明

當 Spark 任務有問題時,您可能會收到階段故障。階段故障可能是由硬體問題,Spark 組態不正確或程式碼問題引起的。發生階段故障時,Spark 驅動程式日誌會報告類似下列內容的例外狀況:

「org.apache.spark.SparkException: 工作因階段失敗而中止: 階段 YYY 中的任務 XXX 失敗了 4 次,最近失敗: 在 YYY 階段中失去任務 XXX (時間 ZZZ,ip-xxx-xx-x-xxx.compute.internal,執行程式 NNN): ExecutorLostFailure (執行中的一項任務造成執行程式 NNN 結束) 原因:(example-reason)」

解決方法

識別您使用 --deploy-mode 用戶端提交的 Spark 工作原因代碼

原因代碼位於終端中顯示的例外狀況中。

如果您從 Amazon EMR 步驟提交工作,則原因代碼位於 Amazon EMR 主控台上的 stderr 檔案中。您也可以從指定用於叢集日誌的 Amazon Simple Storage Service (Amazon S3) 位置取得步驟 stderr 日誌。例如,您可以使用 s3://example-log-bucket/example-cluster-id/steps/example-step-id/ 檔案路徑來尋找日誌。

若要識別 YARN 應用程式日誌中的階段故障,請在主要節點上執行下列命令:

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

**注意:**使用您的 Spark 應用程式 ID 取代 example-application-id

您可以從指定用於叢集日誌的 Amazon S3 位置取得 YARN 應用程式。例如,您可以使用 s3//example-log-bucket/example-cluster-id/containers/example-application-id/ 檔案路徑。您也可以從應用程式主要容器中的 YARN ResourceManager 取得 YARN 應用程式日誌。

解決根本原因

識別例外後,請使用下列其中一篇 AWS 知識中心文章來解決問題:

AWS 官方
AWS 官方已更新 5 個月前