如何在独立的火花中将处理限制为指定数量的核心

Posted

技术标签:

【中文标题】如何在独立的火花中将处理限制为指定数量的核心【英文标题】:How to restrict processing to specified number of cores in spark standalone 【发布时间】:2015-04-30 14:15:07 【问题描述】:

我们已尝试使用各种设置组合 - 但 mpstat 显示所有或大部分 cpu 始终在使用(在单个 8 核系统上)

以下已尝试:

将主人设置为:

local[2]

发送

conf.set("spark.cores.max","2")

在火花配置中

也使用

--total-executor-cores 2

--executor-cores 2

在所有情况下

mpstat -A

显示所有 CPU 都在使用 - 而不仅仅是主机。

所以我现在很茫然。我们确实需要将使用限制为指定数量的 cpu。

【问题讨论】:

spark UI 上显示了什么?? @sb' spark UI 目前不可用:系统管理员正在处理该问题。下周准备好后我会回到这里。 spark gui 显示正确的核心数。但是该设置不起作用:正在使用所有内核。 【参考方案1】:

我在内存大小方面遇到了同样的问题,我想增加它,但以上都没有对我有用。基于this user post,我能够解决我的问题,我认为这也适用于核心数量:

from pyspark import SparkConf, SparkContext

# In Jupyter you have to stop the current context first
sc.stop()

# Create new config
conf = (SparkConf().set("spark.cores.max", "2"))

# Create new context
sc = SparkContext(conf=conf)

希望这对您有所帮助。如果你已经解决了你的问题,请把你的解决方案作为这篇文章的答案发送给我们,这样我们都可以从中受益:)

干杯

【讨论】:

+1 for spark.cores.max - 仅供参考,如果使用 spark-submit,您应该能够使用以下命令从命令行指定:--conf spark.cores.max=2 如原始帖子所示,这些在standalone 模式下没有任何影响。我认为您没有独立运行。这没有回答最初的问题,实际上重复了那里已经包含的信息。 @javadba 这不是一个答案,但可以作为问题的更新添加或作为评论发布。 这是在原始问题conf.set("spark.cores.max","2") 中。此外,您不会因为“我的答案被否决”而对另一个答案投反对票。 这不是我的意图,并且已经将其标记为不是答案。如果您认为我的回答不可接受并且没有提供任何有用的信息,也非常欢迎您这样做。毕竟,正如我所提到的,它在其他配置方面帮助了我,这就是它发布在这里的原因。祝你好运【参考方案2】:

显然触发standalone 忽略 spark.cores.max 设置。该设置确实在纱线中起作用。

【讨论】:

那么你如何在独立中完成这个? 不可能。

以上是关于如何在独立的火花中将处理限制为指定数量的核心的主要内容,如果未能解决你的问题,请参考以下文章

如何在火花中将rdd对象转换为数据框

在 Swift 中将文本限制为一定数量的单词

java - 如何在java中将特定数量的线程限制为同步块

如何在 Dymos 中将数量的积分指定为目标

如何在火花中将列转换为数组[长]

如何在火花中将数据帧转换为csv [重复]