FIFO先进先出调度
代码流程
针对于一个FIFO的调度器,调用addTaskSetManager函数时(也就是submitTasks时).
schedulableBuilder.addTaskSetManager(manager, manager.taskSet.properties)
override def addTaskSetManager(manager: Schedulable, properties: Properties) {
rootPool.addSchedulable(manager)
}
而在Pool实例中,addSchedulable函数的实现为:
函数传入的参数为一个Schedulable的实例,这个实例就是一个TaskSetManager.
override def addSchedulable(schedulable: Schedulable) {
require(schedulable != null)
添加到调度的队列中.
schedulableQueue.add(schedulable)
schedulableNameToSchedulable.put(schedulable.name, schedulable)
schedulable.parent = this
}
在执行task向executor发起启动时,会调用Pool实例中的getSortedTaskSetQueue函数,这个函数根据调度算法来得到一组需要进行调度的TaskSetManager.