【问题标题】:In spark, can I define more executors than available cores?在 spark 中,我可以定义比可用内核更多的执行程序吗?
【发布时间】:2020-09-18 18:20:57
【问题描述】:

假设我总共有 4 个核心, 如果我将执行者的数量定义为 8 会发生什么.. 我们可以在 2 个执行者之间共享一个核心吗? executor的核数可以是分数吗?

这种配置对性能有什么影响。

【问题讨论】:

  • 执行器的核心数可以是分数吗?不可能,也没有任何意义允许分数值。
  • 如果我将执行程序的数量定义为 8 会发生什么...根据资源可用性启动执行程序并不重要...如果您使用任何 RM(如 yarn、Mesos),那么执行器根据集群的资源可用性启动。
  • 在spark架构中,每个cpu核心都被认为是一个slot,每个task/executor会占用一个slot,一次处理一个partition.... core可以在executor之间共享还是不依赖于底层硬件架构。 (即,如果架构启用了超线程,那么内核显然是在进程之间共享的)....但是从 spark 的角度来看,没有这样的 conf 并且它不会以这种方式看到。

标签: apache-spark hadoop pyspark


【解决方案1】:

这是我在 spark 独立模式下观察到的:

我系统的总核心数是 4

如果我使用 spark.executor.cores=2 执行 spark-shell 命令 然后将创建 2 个执行器,每个执行器有 2 个核心。

但如果我配置的执行器数量超过可用核心, 然后将只创建一个执行器,具有系统的最大核心。

核心的数量永远不会是分数。 如果你在配置中分配分数,你最终会出现异常:

如有任何错误,请随时编辑/更正帖子。

【讨论】:

    猜你喜欢
    • 2015-09-30
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2021-06-06
    • 2015-04-01
    • 2019-06-20
    • 2018-11-15
    相关资源
    最近更新 更多