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

How to limit the number of retries on Spark job failure?

我们是运行通过spark-submit的Spark作业,我可以看到在失败的情况下作业会重新提交。

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

这是由于内存不足和 "GC overhead limit exceeded" 问题造成的。

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

有关详细信息,请查看此 link

有两个设置可以控制重试次数(即最大 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
    
  • yarn.resourcemanager.am.max-attempts - YARN 自己的设置,默认为 2.

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

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

spark-submit --conf spark.yarn.maxAppAttempts=1 <application_name>

参见@code 的

但一般情况下 - 它会失败一次并在第二次恢复 - 我猜是在集群或队列太忙的情况下 我正在使用 oozie 协调器 运行 宁工作 - 我正在考虑设置为 1 - 它失败了它将在下一次实现时 运行 -