2

我想在我的 spark 工作中添加一个安全措施,如果他们在 X 小时后没有完成就杀死他们自己。(在yarn模式下在集群模式下使用spark 2.4.3)

在 spark 中没有找到任何可以帮助我实现我想要的配置。

我试着这样做:

    val task = new java.util.TimerTask {
        def run():Unit = {
            val p = Runtime.getRuntime.exec(Array[String]("/bin/sh", "-c", s"yarn application -kill ${sc.applicationId}")) // this code can only run on the cluster
            p.waitFor()
            sc.stop()
        }
    }
    timeoutProcess.schedule(task, X) // where X is 10000 for 10s for testing

但似乎并没有完成杀死应用程序,希望对此有任何想法或想法。

试图环顾四周,但没有找到任何好主意。

4

1 回答 1

1

为作业设置超时的正确方法是通过纱线。

检查这个 hadoop Jira

您可以像这样使用 cli:

yarn application -appId <your app id> -updateLifetime 3600

seconds从您运行此命令开始,这将在 3600 之后终止您的应用程序。

或者您也可以使用 Rest 端点来更新它。

于 2021-08-11T20:26:55.000 回答