job的调度
2016-10-25 13:44:34 0 举报
作业调度是操作系统中的一种关键机制,它负责管理和控制计算机系统中的多个任务。其主要目标是确保所有任务都能公平、高效地共享系统资源,如CPU、内存和I/O设备。作业调度通常包括几个步骤:首先,操作系统接收用户提交的任务;然后,根据一定的调度策略(如优先级、最短作业优先或轮转法等)决定何时运行哪个任务;一旦任务开始运行,操作系统会监控其执行情况,并在需要时进行资源分配和调度。有效的作业调度可以提高系统的吞吐量和响应时间,从而提高用户的满意度。
作者其他创作
大纲/内容
getSortedTaskSetQueue
根据Job生成ResultStage以及其依赖的stage
执行foreachRDD里面的内容
executor运行程序
依次添加jobset中的job到streaming的线程池中
lauchTask将task序列化后发送到对应的executor上执行
按照locality的级别从小到大为task分配资源到executor中只有前面的tasksetmanager全获取到t资源时才会处理下一个taskset
按照优先级返回的tasksetmanager
makerOffers
JobWaiter
resouceOffer获取分配到指定executor的task列表
JobHandler
异步提交JobSubmitted消息到队列中单线程处理
SubmitTasks
提交JobCompleted
TaskSchdulerImpl
foreachPartition
runJob
周期性的产生ReviveOffers命令参数由spark.scheduler.revive.interval=1s决定触发任务池中的任务的执行
JobScheduler
生成一个TasksetManager对应一个stage的taskset
SchedulableBuilder
失败的话reportError关停止掉streamingContext的awaitTermaination
CoarseGrainedShcedulerBackend
生成tasktask优先按照partition优先选择最近的executor1、优先选择已经缓存了RddPartitionBlock的节点2、选择RDD.getPreferedLocation3、选择窄依赖的父RDD的优选位置
DAGScheduler
resouceOffers触发task的调度执行获取到资源的的task列表
DAGSchedulerEventLoop
SparkContext
返回JobResult
TasksetManager
Task列表以及其对应的executorId
按照顺序递归将依赖的stage加入waiting中
同步等待
根据调度策略加入到相应的调度池中
0 条评论
下一页