Spark 任务集并发阶段提交

Spark taskset concurrent stage submission

假设一个 spark 作业有两个具有独立依赖关系的阶段(它们不相互依赖),并且它们由 DAG 调度程序 concurrently/simultaneously(作为任务集)提交给任务调度程序。有人可以更详细地了解执行程序上可用的内核如何在两个就绪 stages/Tasksets 之间分配吗?更准确地说:

一般来说,假设一个新的资源提议触发了 taskscheduler 决定 select 一些准备好的任务(在 n 个准备好的任务集中)执行?在这种情况下,taskscheduler 实现的逻辑是什么?

谢谢。

这取决于正在使用的调度模式。在 TaskSchedulerImpl.scala构造函数解析调度方式 基于标志"spark.scheduler.mode"。默认为 FIFO,其中 情况下,所有核心在被执行之前首先被分配给第一个任务集 提供给第二个任务集。