0

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

  • 直到前一个任务集/阶段的任务完成后,第二个任务集/阶段的任务才会启动?或者,

  • 这两个任务集的任务可以同时启动(授予核心),具体取决于由任务调度器实现的逻辑,例如, FIFO /公平?

一般假设一个新的资源报价已经触发的TaskScheduler做出决定选择执行一些准备任务(n个准备taksets的)?在这种情况下,taskscheduler实现的逻辑是什么?

谢谢。

回答

0

这取决于正在使用的调度模式。在 TaskSchedulerImpl.scala中,构造函数根据标记“spark.scheduler.mode”解析调度模式 。缺省值是FIFO,其中 在向第二个任务集提供 之前,所有内核都首先被提供给第一个任务集。