2017-10-13 88 views
1

为了教育目的,我试图让Yarn + Spark重新尝试我的Spark工作(即失败,并在另一个应用程序尝试中将其重新安排到纱线上)。Spark - 什么触发一个火花作业被重新尝试?

各种故障似乎会导致Spark作业重新运行;我知道我已经看过这么多次了。但是我很难模拟它。

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

回答

0

经过多次玩这个之后,我看到Spark + YARN与退出代码(至少不是MapR 5.2.1的版本)并不能很好地协作,但我认为它不是MapR特有的。

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

做System.exit(-1)不提供更稳定的结果,即使重复相同的代码,有时它可能会成功或失败。有趣的是,获取对驱动程序主线程的引用并杀死它似乎强制重新尝试;但是这非常脏,并且需要在线程类中使用弃用的函数。