当前位置: 首页 > 工具软件 > DS Scheduler > 使用案例 >

Scheduler模块

叶谦
2023-12-01
概述:Scheduler模块有两个重要的组件,DAGScheduler与TaskScheduler。
DAGScheduler主要负责分析用户提交的应用,并根据任务的依赖关系建立
DAG,然后将DAG划分为不同的stage,其中每个stage由一组可以并发执行的task
组成,这些task的执行逻辑相同只是作用于不同的数据。在DAGScheduler将这
组Task划分完后,会将他们提交给TaskScheduler,TaskScheduler通过Executor
去启动任务,在Executor执行的任务如果缓存中没有计算结果,那么就需要开始
计算。计算结果会回传到Driver或保存在本地。
0. DAGSchedule于TaskSchedule从何而来
   随着SparkContext创建而被创建
1. job被提交 --> stage划分 --> task划分
  action算子最终会触发一个job的提交,DAGScheduler拿到这个job后会从resultstage开始根据
  dependency递归切分stage,然后从后往前递归地先提交父stage,对于一个stage最终根据partitions来切分
  task,然后将taskset提交给TaskSheduler。
2. task的执行
 tasks作为一个taskSet被提交给TaskScheduler,taskScheduler通过调度器SchedulableBuilder去根据调度
 策略去调度他们,而且taskScheduler会生成一个TaskManager来管理这个 taskSet的生命周期。
3. task的监控于返回值
    task任务在执行时会触发一些回调函数,最终由DagScheduler的DAGSchedulerEventProcessLoop 
    recive到。对于ResultTask 结果会返回到driver中,对于MapShuffledTask,会将记录分区数据信息的
    MapState发送回来。
 类似资料: