Spark 任务集并发阶段提交
Spark taskset concurrent stage submission
假设一个 spark 作业有两个具有独立依赖关系的阶段(它们不相互依赖),并且它们由 DAG 调度程序 concurrently/simultaneously(作为任务集)提交给任务调度程序。有人可以更详细地了解执行程序上可用的内核如何在两个就绪 stages/Tasksets 之间分配吗?更准确地说:
第二个 taskset/stage 的任务要等到前一个 taskset/stage 的任务完成后才会启动?或者,
两个任务集中的任务可以同时启动(授予核心),具体取决于任务调度程序实现的逻辑,例如FIFO/Fair?
一般来说,假设一个新的资源提议触发了 taskscheduler 决定 select 一些准备好的任务(在 n 个准备好的任务集中)执行?在这种情况下,taskscheduler 实现的逻辑是什么?
谢谢。
这取决于正在使用的调度模式。在
TaskSchedulerImpl.scala构造函数解析调度方式
基于标志"spark.scheduler.mode"。默认为 FIFO,其中
情况下,所有核心在被执行之前首先被分配给第一个任务集
提供给第二个任务集。
假设一个 spark 作业有两个具有独立依赖关系的阶段(它们不相互依赖),并且它们由 DAG 调度程序 concurrently/simultaneously(作为任务集)提交给任务调度程序。有人可以更详细地了解执行程序上可用的内核如何在两个就绪 stages/Tasksets 之间分配吗?更准确地说:
第二个 taskset/stage 的任务要等到前一个 taskset/stage 的任务完成后才会启动?或者,
两个任务集中的任务可以同时启动(授予核心),具体取决于任务调度程序实现的逻辑,例如FIFO/Fair?
一般来说,假设一个新的资源提议触发了 taskscheduler 决定 select 一些准备好的任务(在 n 个准备好的任务集中)执行?在这种情况下,taskscheduler 实现的逻辑是什么?
谢谢。
这取决于正在使用的调度模式。在 TaskSchedulerImpl.scala构造函数解析调度方式 基于标志"spark.scheduler.mode"。默认为 FIFO,其中 情况下,所有核心在被执行之前首先被分配给第一个任务集 提供给第二个任务集。