Apache Spark 第六章:执行计划与 DAG 调度

第六章我们深入拆解 Spark 的执行计划与 DAG 调度机制,这是理解 Spark 为什么这样跑最核心的一章。


  • 先看第一张,一条 SQL 从代码到物理执行的完整转换过程。执行计划的四个阶段搞清楚了;
  • 接下来看 DAG 调度的核心------Job、Stage、Task 的层级关系和划分原理:层级结构搞清楚了;
  • 接下来看最难理解的部分------Shuffle 的完整读写机制,以及为什么它是性能瓶颈:Shuffle 机制搞透了;
  • 最后一张,看 AQE(自适应查询执行)的三大能力,这是 Spark 3.0 后最重要的运行时优化特性。

执行计划四阶段(第一张) 是理解 Spark SQL 工作原理的主线。一条 SQL 经历四次变换才真正被执行:

  • 逻辑计划只是树形结构的操作描述,没有任何执行细节;
  • Catalyst Optimizer 用 50 多条规则对逻辑计划做谓词下推、列裁剪、常量折叠等变换,让数据尽早缩减;
  • Physical Planner 在优化后的逻辑计划基础上选择具体算法,比如用哪种聚合方式、用哪种 Join;
  • 最后 Tungsten 把物理计划编译成 JVM 字节码,用 WholeStage CodeGen 把多个算子的循环合并成一个,消除虚函数调用开销,配合 SIMD 向量化真正高速执行。

查看执行计划用 df.explain("formatted"),生产排障必备。


Job → Stage → Task(第二张) 是 DAG 调度的三层结构。

  • 一次 count()write() 就是一个 Job;
  • Job 按宽依赖(Shuffle 边界)被 DAG Scheduler 切成多个 Stage,Stage 内部所有算子流水线执行无网络开销;
  • 每个 Stage 被 Task Scheduler 拆成若干 Task 发给 Executor,一个 Partition 对应一个 Task,跑在一个线程上。
  • 并行度由 Partition 数决定,spark.sql.shuffle.partitions 控制 Shuffle 后的分区数(默认 200,按数据量调整)。

Shuffle 机制(第三张) 是 Spark 最贵操作的完整剖析。

  • Map 端把每条数据按目标 Reducer 的 Hash 值排序写入本地磁盘,同时生成 index 文件记录偏移;
  • Reduce 端通过网络从所有 Mapper 的磁盘拉取属于自己 Key 的数据块,合并后聚合输出。
  • 代价来源有四个:Spill 溢写磁盘、跨节点网络传输、序列化反序列化、GC 压力。
  • 减少 Shuffle 的核心手段:
    • reduceByKey 就不用 groupByKey(Map 端预聚合);
    • 能 broadcast 就广播(彻底消除 Shuffle);
    • 开启 AQE 自动合并小分区;
    • 调整 shuffle.partitions 匹配数据规模。

AQE 三大能力(第四张) 是 Spark 3.0 后最重要的运行时优化。

传统 Catalyst 只能在编译期用统计估算优化,AQE 则在每个 Stage 完成后收集真实数据量重新优化后续计划,相当于"边跑边调"。

三个核心能力:

  • 自动合并小分区把 200 个 1MB 小 Task 合并成几个 64MB 的大 Task,大幅减少调度开销;
  • 数据倾斜处理把超大分区拆成多个子分区并行处理,彻底解决"一个 Task 拖累全局"的问题;
  • 动态切换 Join 策略在运行期发现某张表实际只有 6MB 时自动切为 Broadcast Join,消除原本计划中的 Shuffle。

这三项都默认开启,但倾斜阈值和分区目标大小值得根据业务数据分布手动调整。

相关推荐
小K漫剧创作笔记43 分钟前
AI短剧出海从「选修课」变「必修课」:合规分发正在成为内容全球化的真正门槛
大数据·人工智能·ai·aigc·漫剧
samLi06201 小时前
【数据集】中国“千兆城市”关键指标数据(2021-2023年)
大数据
城数派1 小时前
1991-2100年中国1km分辨率逐月气候指标栅格数据集(28个气象指标)
大数据
AC赳赳老秦1 小时前
司法公开数据采集应用:OpenClaw 抓取裁判文书公开信息,批量整理同类参考案例
java·大数据·python·数据挖掘·数据分析·php·openclaw
yurenshi16683 小时前
自媒体多账号管理工具 4 款实测:聚媒通 / 融媒宝 / 新榜小豆芽 / 矩阵通横向对比,快速选型
大数据·矩阵·媒体
nVisual4 小时前
机柜PDU安装位置与空间建模方案
大数据·网络·数据库·信息可视化·数据中心基础设施管理
@insist1234 小时前
系统规划与管理师-流程评价与持续改进核心知识-终章
大数据·人工智能·软考·系统规划与管理师·软件水平考试·系统规划与管理工程师
TechEdu2026065 小时前
[计算机科学]大数据硬件架构与软件架构概览
大数据·计算机科学
爱莉希雅&&&5 小时前
elasticsearch+kibana+logstash+filebeat链路部署流程
大数据·elasticsearch·搜索引擎·kibana·logstash·filebeat
FII工业富联科技服务6 小时前
从灯塔工厂到AI Factory新模式:AI正在重构制造业的四大核心能力
大数据·运维·人工智能·重构·ar·制造