Spark - 触发重新尝试 Spark 作业的原因



主要是出于教育目的,我试图让 Yarn + Spark 故意重新尝试我的 Spark 作业(即失败,并在另一个应用程序尝试中看到它被 yarn 重新安排)。

各种故障似乎会导致 Spark 作业重新运行;我知道我已经看过无数次了。 不过我在模拟它时遇到了麻烦。

我尝试强行停止流上下文并调用 System.exit(-1),但都没有达到预期的效果。

经过大量的尝试,我看到Spark + YARN不能很好地与退出代码一起使用(至少对于MapR 5.2.1的版本不是),但我认为它不是特定于MapR的。

有时 Spark 程序会抛出异常并死亡,它会向 YARN 报告成功(或者 YARN 以某种方式获得成功),因此没有重试。

执行 System.exit(-1) 不会提供任何更稳定的结果,有时即使重复相同的代码,它也可能是成功或失败。

有趣的是,获取对驱动程序主线程的引用并杀死它似乎确实会强制重新尝试;但这非常肮脏,需要在线程类上使用已弃用的函数。

相关内容

  • 没有找到相关文章

最新更新