【问题标题】:DAG Scheduler vs. Catalyst for SparkSpark 的 DAG 调度程序与 Catalyst
【发布时间】:2021-04-09 16:50:39
【问题描述】:

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

然后:

  • 我的理解是,对于 RDD,我们有 DAG 调度器,它以简单的方式创建阶段。

  • 我基于on reading elsewhere to-date 的理解是,对于 DF 和 DS,我们:

    • 使用 Catalyst 而不是 DAG 调度程序。 但我不相信。
    • 有钨。

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

  • 是催化剂也创建了阶段吗?
    • 这似乎是一个愚蠢的问题,但我在 SO 上注意到了一个关于禁用 Spark Catalyst Optimizer 的问题。 这意味着没有。
    • 此外,由于 Spark 范例是基于阶段的(随机边界),在我看来,决定阶段不是催化剂。

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

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

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

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

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

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 从我展示的幻灯片中,我不相信。你如何用你关于催化剂的最后一句话来解释这一点?
    • 您可以通过 Databricks 上的this article 了解 Catalyst 如何生成执行计划以及整个阶段的代码。
    • 我知道那篇文章。当我输入单词 Stage 时,我发现 0 个条目。
    • 我显然错了。这应该很清楚,因为我是说在催化剂工作完成后,执行是根据 RDD 完成的。 RDD 是分阶段执行的。
    • 更新了同样的答案。
    【解决方案2】:

    好吧,我进行了更多搜索,并从 David Vrba 的 Spark 峰会 2019 幻灯片中找到了“权威”来源。它是关于 Spark SQL 的,并显示了 DAG 调度程序。因此我们可以得出结论,Catalyst 不会决定 Stages 的任何内容。或者这是错误的,上面的答案是否正确,下面的陈述是否正确?图片暗示不同的是我的看法,所以没有。

    我在 Catalyst 其他地方读到的声明:...

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

    ...

    有点误导。话虽如此,但可以确定的是,在此之前其他地方都没有明确的声明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 2021-10-22
      • 2018-12-09
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      相关资源
      最近更新 更多