菜单
本页目录

DAG

DAG有向无环图,用以描述任务执行流程,主要作用是协助DAG调度器构建Task分配用以做任务管理

DAG(有向无环图)与分区

DAG(Directed Acyclic Graph)是Spark中任务执行的基本单元,描述了数据从初始输入到最终输出的整个转换过程。DAG中的每个节点代表一个RDD(弹性分布式数据集),每条边代表RDD之间的转换关系。DAG的一个关键特性是,它是无环的,即没有任何回路。这意味着数据只能从上游流向下游,不会回到之前的状态。

分区(Partition)是RDD中的最小数据单元,RDD通常由多个分区组成,分布在集群中的不同节点上进行并行处理。分区的数量直接影响任务的并行度,分区数越多,并行度越高,任务的执行速度也越快。

DAG与分区的关系

  • 每个RDD都会划分为多个分区,DAG的每个节点实际上是对分区的操作。
  • 当DAG执行时,Spark根据分区进行并行计算,每个节点的操作会作用于对应的分区。
  • 分区之间的数据传输通过窄依赖或宽依赖进行管理,窄依赖的情况下分区间的数据流动在同一个节点上,宽依赖时需要跨节点进行数据shuffle。