Spark - 是什么触发重新尝试 spark 作业?
Spark - what triggers a spark job to be re-attempted?
主要出于教育目的,我试图让 Yarn + Spark 有意重新尝试我的 Spark 作业(即失败,并在另一个应用程序尝试中看到它被 yarn 重新安排)。
各种故障似乎导致重新启动一个Spark作业运行;我知道我已经看过很多次了。不过我在模拟它时遇到了问题。
我曾尝试强行停止流式传输上下文并调用 System.exit(-1),但都没有达到预期的效果。
经过大量尝试后,我发现 Spark + YARN 不能很好地与退出代码一起使用(至少对于 MapR 5.2.1 的版本而言),但我不认为它是特定于 MapR 的。
有时 spark 程序会抛出异常而死,它会向 YARN 报告 SUCCESS(或者 YARN 以某种方式获得 SUCCESS),因此不会重试。
执行 System.exit(-1) 不会提供任何更稳定的结果,有时即使重复相同的代码也可能是成功或失败。
有趣的是,获取对驱动程序主线程的引用并杀死它似乎确实强制重新尝试;但这很脏,需要在线程 class.
上使用已弃用的函数
主要出于教育目的,我试图让 Yarn + Spark 有意重新尝试我的 Spark 作业(即失败,并在另一个应用程序尝试中看到它被 yarn 重新安排)。
各种故障似乎导致重新启动一个Spark作业运行;我知道我已经看过很多次了。不过我在模拟它时遇到了问题。
我曾尝试强行停止流式传输上下文并调用 System.exit(-1),但都没有达到预期的效果。
经过大量尝试后,我发现 Spark + YARN 不能很好地与退出代码一起使用(至少对于 MapR 5.2.1 的版本而言),但我不认为它是特定于 MapR 的。
有时 spark 程序会抛出异常而死,它会向 YARN 报告 SUCCESS(或者 YARN 以某种方式获得 SUCCESS),因此不会重试。
执行 System.exit(-1) 不会提供任何更稳定的结果,有时即使重复相同的代码也可能是成功或失败。
有趣的是,获取对驱动程序主线程的引用并杀死它似乎确实强制重新尝试;但这很脏,需要在线程 class.
上使用已弃用的函数