假设一个spark作业有两个具有独立依赖关系的阶段(它们不相互依赖),并且它们由DAG调度程序同时/同时(作为Tasksets)提交给任务调度程序。有人能够更详细地了解执行程序中可用的内核如何在两个就绪阶段/任务集之间分配吗?更确切地说:
在上一个任务集/阶段的任务完成之前,第二个任务集/阶段的任务才会启动?或者,
两个任务集中的任务可以同时启动(授予核心),这取决于任务调度器实现的逻辑,例如: FIFO /公平?
一般来说,假设一个新的资源提供已经触发了taskcheduler决定选择一些准备好的任务(n个准备好的任务集)来执行?在这种情况下,taskscheduler实现了什么逻辑?
感谢。
答案 0 :(得分:0)
这取决于正在使用的调度模式。在 TaskSchedulerImpl.scala构造函数解析调度模式 基于旗帜" spark.scheduler.mode"。默认值为FIFO case之前,所有核心首先被赋予第一个任务集 提供给第二个任务集。