如何限制Spark作业失败的重试次数?

cod*_*nky 24 hadoop-yarn apache-spark

我们正在运行Spark作业spark-submit,我可以看到在失败的情况下将重新提交作业.

如果纱线容器出现故障或者有什么异常,我该如何阻止它进行尝试#2?

在此输入图像描述

Jac*_*ski 31

有两个设置可以控制重试次数(即ApplicationMaster,YARN 的最大注册尝试次数被认为是失败的,因此整个Spark应用程序都被认为):

  • spark.yarn.maxAppAttempts - Spark自己的设置.请参阅MAX_APP_ATTEMPTS:

    private[spark] val MAX_APP_ATTEMPTS = ConfigBuilder("spark.yarn.maxAppAttempts")
      .doc("Maximum number of AM attempts before failing the app.")
      .intConf
      .createOptional
    
    Run Code Online (Sandbox Code Playgroud)
  • yarn.resourcemanager.am.max-attempts - YARN自己的设置,默认为2.

(正如您在YarnRMClient.getMaxRegAttempts中看到的那样)实际数字是YARN和Spark的配置设置的最小值,YARN是最后的选择.


RNH*_*TTR 15

API /编程语言无关的解决方案是将yarn max尝试设置为命令行参数:

spark-submit --conf spark.yarn.maxAppAttempts=1 <application_name>
Run Code Online (Sandbox Code Playgroud)

请参阅@code的回答


小智 6

添加属性 yarn.resourcemanager.am.max-attempts到您的 yarn-default.xml 文件中。它指定了应用程序尝试的最大次数。

有关更多详细信息,请查看此链接