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

在 Apache Spark 中,资源调度器的工作机制是怎样的?针对不同的资源调度策略(如 FIFO、FAIR、Capacity),有哪些具体的调优方法?

数据性能优化技术原理方案权衡Apache Spark

考察说明

考察对 Spark 资源调度机制的理解以及实际调优能力。

回答思路

  1. 【回答框架 1】Spark 资源调度主要发生在集群层面和应用内部。集群层面由外部调度器(如 YARN、Mesos、K8s)管理资源分配;应用内部由 DAGScheduler 和 TaskScheduler 负责任务调度,其中 TaskScheduler 根据调度策略将任务分配给执行器。
  2. 【回答框架 2】Spark 内置了 FIFO、FAIR 和 Capacity(基于 YARN 或队列)等调度策略。FIFO 按提交顺序执行,适合单个大型作业;FAIR 在多个用户或小作业间公平轮转,适合并发场景;Capacity 允许配置队列的容量和安全限制,适合多租户环境。
  3. 【回答框架 3】调优资源调度策略时,可以设置 spark.scheduler.mode 为 FAIR 来启用公平调度,并配置公平调度文件中的池优先级、权重等参数。对于 YARN 模式,可通过调整队列容量、最大核数、内存等参数来优化资源利用。
  4. 【回答框架 4】从应用角度,可通过调整 spark.executor.cores、spark.executor.memory 和 spark.dynamicAllocation.enabled 等参数来提升资源利用率和并行度。同时要注意避免资源争抢和空闲浪费,结合实际运行日志进行调优。
  5. 【关键点 1】Spark 调度分为集群外部调度和应用内调度,TaskScheduler 是关键组件。
  6. 【关键点 2】FIFO 适合长作业,FAIR 适合多用户并发,Capacity 适合多租户隔离。
  7. 【关键点 3】通过配置调度模式和公平调度文件可切换策略。
  8. 【关键点 4】资源调优需结合动态资源分配和并行度设置。
  9. 【易错点 1】过于调大 executor 数量可能导致队列资源不足或内存溢出。
  10. 【易错点 2】公平调度不是万能,需按作业等待时间合理配置权重。
  11. 【易错点 3】不能只关注调度策略,忽视任务数据倾斜对资源的影响。