我想排查 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 获取此信息。
解决根本原因
找到异常后,请使用以下文章之一解决根本原因: