Spark - 是什么触发重新尝试 Spark 作业?

问题描述 投票:0回答:2

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

各种失败似乎都会导致 Spark 作业重新运行;我知道我已经看过很多次了。不过我在模拟它时遇到了麻烦。

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

apache-spark hadoop-yarn
2个回答
1
投票

经过多次尝试,我发现 Spark + YARN 与退出代码不能很好地配合使用(至少对于 MapR 5.2.1 的版本而言),但我不认为它是 MapR 特定的。

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

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

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


0
投票

我试图实现模拟相同的重新尝试情况。

为了模拟由 YARN 管理的 Spark 作业中的重试场景,我利用集群部署模式并通过抛出未处理的异常来引发作业内的故障。

© www.soinside.com 2019 - 2024. All rights reserved.