数据岗位面试题更新 2026-08-05

Apache Spark 中的 DAG Scheduler 与 Task Scheduler 各自承担什么职责?它们在 Spark 作业执行流程中分别起什么作用?

数据技术原理Apache Spark

考察说明

考查对 Spark 核心调度器职责划分与协作机制的理解。

回答思路

  1. 【回答框架 1】DAG Scheduler 是高层调度器,负责将用户提交的 Job 根据 RDD 之间的依赖关系划分为多个 Stage,并以 Stage 为单位生成 TaskSet。它主要处理宽依赖的切割,决定任务的依赖顺序,并提交给底层执行。
  2. 【回答框架 2】Task Scheduler 是低层调度器,负责任务的具体分发与执行管理。它接收 DAG Scheduler 提交的 TaskSet,将每个任务分配到具体的工作节点(Executor)上,并处理任务重试、失败重试、推测执行等细粒度调度。
  3. 【回答框架 3】二者协作流程:Driver 启动后,用户代码触发 Action 时 DAG Scheduler 构建 DAG,按照宽依赖划分 Stage,并将每个 Stage 的 TaskSet 提交给 Task Scheduler;Task Scheduler 根据资源情况将任务部署到 Executor 并监控执行结果,任务完成后反馈给 DAG Scheduler。
  4. 【回答框架 4】DAG Scheduler 通过 Fault Tolerance 机制处理 Stage 级失败,若某 Stage 失败则重新提交该 Stage 及其依赖;Task Scheduler 处理任务级失败,如重试或重新调度。两者层级分明,确保作业容错与高效执行。
  5. 【回答框架 5】总体而言,DAG Scheduler 负责逻辑层面的阶段划分与任务生成,Task Scheduler 负责物理层面的资源分配与任务执行,共同实现 Spark 的分布式计算调度。
  6. 【关键点 1】DAG Scheduler 负责将作业按宽依赖划分为 Stage,并生成 TaskSet。
  7. 【关键点 2】Task Scheduler 负责任务分配到 Executor 并监控执行,处理失败与推测执行。
  8. 【关键点 3】DAG Scheduler 处理 Stage 级失败,Task Scheduler 处理任务级失败。
  9. 【易错点 1】混淆两者职责,错误认为 DAG Scheduler 直接调度任务到节点。
  10. 【易错点 2】忽略 Task Scheduler 的容错机制,实际它支持失败重试与资源感知调度。