spark的task调度器(FIFO先进先出调度算法)

本文深入剖析了Spark的FIFO调度器工作原理,从代码流程出发,解释了TaskSetManager如何进入调度队列,以及调度算法如何根据优先级和stageId进行排序。在FIFO调度中,先提交的任务(jobId较小)优先执行,同一任务中,shuffle依赖的上游Stage先于下游Stage执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FIFO先进先出调度

代码流程

针对于一个FIFO的调度器,调用addTaskSetManager函数时(也就是submitTasks时).

schedulableBuilder.addTaskSetManager(managermanager.taskSet.properties)

override def addTaskSetManager(manager: Schedulableproperties: Properties) {
  rootPool.addSchedulable(manager)
}

而在Pool实例中,addSchedulable函数的实现为:

函数传入的参数为一个Schedulable的实例,这个实例就是一个TaskSetManager.

override def addSchedulable(schedulable: Schedulable) {
  require(schedulable != null)

添加到调度的队列中.
  schedulableQueue.add(schedulable)
  schedulableNameToSchedulable.put(schedulable.nameschedulable)
  schedulable.parent = this
}

 

在执行task向executor发起启动时,会调用Pool实例中的getSortedTaskSetQueue函数,这个函数根据调度算法来得到一组需要进行调度的TaskSetManager.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值