首页 > 解决方案 > Spark 的 DAG 调度程序与 Catalyst

问题描述

我想确认一些方面,从阅读所有博客和 Databricks 资源和专家 Holden、Warren 等人看来,这些方面的解释似乎仍然很糟糕。我还注意到网上关于这个话题的一些悬而未决的问题。

然后如下:

由于 DAG 也适用于 DF 和 DS(显然),我还有 1 个问题——只是为了确定:

因此,我的结论是 DAG 调度程序仍用于具有 DF 和 DS 的阶段,但我正在寻找确认。

而且,这张图暗示着还有一个DAG Scheduler。

在此处输入图像描述

这张来自 Databricks 2019 峰会的图片似乎与博客上的声明形成鲜明对比:

帮助 Dataset 更好地执行的一个重要元素是 Catalyst Optimizer (CO),它是一个内部查询优化器。它将用于构建数据集的转换“转换”为物理执行计划。因此,它类似于用于创建 RDD 执行物理计划的 DAG 调度程序。...

我在带有 DF 等的 DAG 上看到了许多关于 SO 的未回答问题,并且很多东西都过时了,因为它与 RDD 相关。因此,我询问了我与 Spark 知识的一些联系,并指出他们在提供合适的答案时疏忽了。

标签: apache-spark

解决方案


让我尝试为您清除这些术语。

Spark Scheduler负责调度任务执行。它管理作业将被安排在哪里,它们是否会被并行安排等。Spark Scheduler 与块管理器和集群后端一起工作,以有效利用集群资源来实现各种工作负载的高性能。DAGScheduler就是其中的一部分。

Catalyst是 Spark 的优化器组件。它执行查询优化并创建多个执行计划,其中根据 RDD 选择最优化的一个执行计划。

Tungsten是专注于提高 Spark 应用程序的 CPU 和内存利用率的伞形项目。

DAGScheduler负责阶段的生成及其调度。它根据它们是“窄”依赖关系还是具有随机依赖关系,在随机边界处打破每个 RDD 图。它还根据当前缓存状态确定每个任务应该在哪里执行。


推荐阅读