我想在带有超时参数的集群环境中提交作业,如果超过允许的持续时间,有没有办法让 spark 杀死正在运行的作业?
最佳答案
在 Spark 2.1.0 中,没有内置解决方案(添加一个非常好的功能!)。
您可以使用 speculation
功能重新启动长任务,使用 spark.task.maxFailures
来终止过多重新启动的任务。
但这绝对不干净,Spark 缺少一个真正的“断路器”来停止长时间的任务(例如 noob SELECT * FROM DB
)
另一方面,您可以使用 Spark Web UI Web API:
1) 获取正在运行的作业:GET http://SPARK_CLUSTER_PROD/api/v1/applications/application_1502112083252_1942/jobs?status=running
(这将为您提供一个带有 submissionTime
字段的数组,您可以使用它来查找长期工作)
2) 终止工作:每个工作阶段的 POST http://SPARK_CLUSTER_PROD/stages/stage/kill/?id=23881&terminate=true
。
我相信 Spark 也有一个隐藏的 API,你可以尝试使用。
关于apache-spark - 限制apache spark作业运行持续时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42063808/