gpt4 book ai didi

apache-spark - Spark 显示的内核数与使用 spark-submit 传递给它的内核数不同

转载 作者:行者123 更新时间:2023-12-04 05:13:14 25 4
gpt4 key购买 nike

TL; 博士

Spark UI 显示的内核和内存数量与我在使用 spark-submit 时要求的数量不同

更多细节:

我在独立模式下运行 Spark 1.6。
当我运行 spark-submit 时,我将 1 个执行程序实例传递给它,其中 1 个内核用于执行程序,还有 1 个内核用于驱动程序。
我期望发生的是我的应用程序将总共有 2 个内核运行。
当我检查 UI 上的环境选项卡时,我看到它收到了我给它的正确参数,但它似乎仍然使用不同数量的内核。你可以在这里看到它:

enter image description here

这是我正在使用的 spark-defaults.conf:

spark.executor.memory 5g
spark.executor.cores 1
spark.executor.instances 1
spark.driver.cores 1

检查 Spark UI 上的环境选项卡显示这些确实是收到的参数,但 UI 仍然显示其他内容

有没有人知道什么可能导致 Spark 使用的内核数与我希望通过的内核数不同?我显然尝试使用谷歌搜索它,但没有找到任何关于该主题的有用信息

提前致谢

最佳答案

TL; 博士

使用 spark.cores.max而是定义可用内核的总数,从而限制执行程序的数量。

独立模式 ,使用贪婪策略,并且将创建与您的工作线程上可用的内核和内存一样多的执行程序。

在您的情况下,您为每个执行程序指定了 1 个核心和 5GB 内存。
以下将由 Spark 计算:

  • 由于有 8 个内核可用,它将尝试创建 8 个执行程序。
  • 但是,由于只有30GB的可用内存,所以它只能创建6个执行器:每个执行器将有5GB的内存,加起来就是30GB。
  • 因此,将创建 6 个 executor,总共将使用 6 个内核和 30GB 内存。

  • Spark 基本上满足了你的要求。为了实现您想要的,您可以使用 spark.cores.max选项记录 here并指定您需要的确切内核数。

    一些旁注:
  • spark.executor.instances是仅限 YARN 的配置
  • spark.driver.memory已经默认为 1 个核心

  • 我也在努力简化独立模式下执行程序数量的概念,这可能会集成到下一个版本的 Spark 中,并希望有助于确定您将拥有的执行程序数量,而无需在走。

    关于apache-spark - Spark 显示的内核数与使用 spark-submit 传递给它的内核数不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37784692/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com