大数据计算有向无环图
DAG 是什么?
把一串转换操作画成图,Spark 据此优化执行顺序
类比:施工流程图,先地基再砌墙,顺序不能乱,也不能成环
为什么要有 DAG
MapReduce 只有 map 和 reduce 两段,复杂逻辑要串很多个作业,每个作业都落一次 HDFS。DAG 把整个计算过程描述成一张图,Spark 可以在图层面做优化:合并窄依赖、调整 join 顺序、下推过滤条件。
怎么切成 Stage
从后往前推,遇到宽依赖(shuffle)就切一刀,形成一个 Stage。Stage 内部是窄依赖,可以流水线执行,一个分区算完直接传给下一个算子,不需要落盘。
DAG 与容错
某个分区丢了,Spark 顺着血缘往上找最近的可用数据重算,而不是重跑整个作业。如果中间结果 persist 过,就从缓存恢复;没有缓存就从头算——所以“要不要 cache”本质是在用内存换重算时间。