限制apache Spark作业运行时间

Gem*_*741 7 apache-spark

我想在带有超时参数的集群环境中提交作业,是否有办法让 Spark 在超出允许的持续时间时杀死正在运行的作业?

Tho*_*aux 1

在 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,你可以尝试使用。