如何排查 Amazon EMR 上 Spark 任务中的阶段故障?

上次更新日期:2022 年 1 月 31 日

我想排查 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 客户端提交的 Spark 任务,原因代码位于在终端显示的异常中。

对于使用 --deploy-mode 集群提交的 Spark 任务,在主节点(master node)上运行以下命令,以在 YARN 应用程序日志中查找阶段故障。将 application_id 替换为您 Spark 应用程序的 ID(例如:application_1572839353552_0008)。

yarn logs -applicationId application_id | grep  "Job aborted due to stage failure" -A 10

您还可以从应用程序主容器中的 YARN ResourceManager 获取此信息。

解决根本原因


这篇文章对您有帮助吗?


您是否需要账单或技术支持?