中间件速查手册
大数据计算有向无环图

DAG 是什么?

把一串转换操作画成图,Spark 据此优化执行顺序

类比:施工流程图,先地基再砌墙,顺序不能乱,也不能成环

为什么要有 DAG

MapReduce 只有 map 和 reduce 两段,复杂逻辑要串很多个作业,每个作业都落一次 HDFS。DAG 把整个计算过程描述成一张图,Spark 可以在图层面做优化:合并窄依赖、调整 join 顺序、下推过滤条件。

怎么切成 Stage

从后往前推,遇到宽依赖(shuffle)就切一刀,形成一个 Stage。Stage 内部是窄依赖,可以流水线执行,一个分区算完直接传给下一个算子,不需要落盘。

DAG 与容错

某个分区丢了,Spark 顺着血缘往上找最近的可用数据重算,而不是重跑整个作业。如果中间结果 persist 过,就从缓存恢复;没有缓存就从头算——所以“要不要 cache”本质是在用内存换重算时间。

它出现在这些中间件里

相关概念