Spark - 什么触发重新尝试的火花作业?

时间:2017-10-13 14:30:45

标签: apache-spark yarn

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

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

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

1 个答案:

答案 0 :(得分:1)

经过大量的游戏后,我发现Spark + YARN与退出代码不兼容(至少不适用于MapR 5.2.1的版本),但我认为它不是MapR特有的。

有时候一个火花程序会抛出异常并死掉,它会向YARN报告SUCCESS(或YARN以某种方式获取SUCCESS),所以没有重新尝试。

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

有趣的是,获取对驱动程序主线程的引用并将其杀死似乎强制重新尝试;但这非常脏,需要在线程类上使用不推荐使用的函数。