任务抢占

Databricks中的Apache Spark调度器自动抢占任务以强制公平共享。这保证了具有许多并发运行作业的集群上的交互响应时间。

提示

当任务被调度程序抢占时,它们的终止原因将设置为抢占通过调度器.此原因在Spark UI中可见,可用于调试抢占行为。

抢占选项

默认情况下,抢占是保守的:在调度程序干预之前,作业可能会在30秒内耗尽资源。您可以在集群启动时通过设置以下Spark配置属性来优化抢占:

  • 是否应该启用抢占。

    spark.databricks.preemption.enabled真实
  • 每个工作的公平份额。将此设置为1.0意味着调度器将积极尝试确保完美的公平共享。将该值设置为0.0可以有效地禁用抢占。默认设置是0.5,这意味着在最坏的情况下,一个工作将得到其公平份额的一半。

    spark.databricks.preemption.threshold 0.5
  • 在抢占生效之前,一份工作必须挨饿多长时间。将其设置为较低的值将以集群效率为代价提供更多的交互响应时间。建议取值范围是1 ~ 100秒。

    spark.databricks.preemption.timeout 30年代
  • 调度程序检查任务抢占的频率。这应该设置为小于抢占超时。

    spark.databricks.preemption.interval 5 s

有关作业调度的详细信息,请参见应用内部调度