Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 限制Apache Spark CPU的使用_Apache Spark - Fatal编程技术网

Apache spark 限制Apache Spark CPU的使用

Apache spark 限制Apache Spark CPU的使用,apache-spark,Apache Spark,我正在使用Apache Spark(独立模式)ALS推荐算法处理60 GB的数据,问题是算法启动时CPU峰值达到100% 如何在spark中设置CPU使用限制? 例如,仅使用50%的CPU 我尝试过使用更少的CPU内核,但它并没有改变CPU使用率 我在具有以下配置的服务器上以独立模式运行spark: #System information : OS Name: Microsoft Windows Server 2016 Standard OS Version:

我正在使用Apache Spark(独立模式)ALS推荐算法处理60 GB的数据,问题是算法启动时CPU峰值达到100% 如何在spark中设置CPU使用限制? 例如,仅使用50%的CPU

我尝试过使用更少的CPU内核,但它并没有改变CPU使用率

我在具有以下配置的服务器上以独立模式运行spark:

#System information :
OS Name:                   Microsoft Windows Server 2016 Standard
OS Version:                10.0.14393 N/A Build 14393
System Type:               x64-based PC
Processor(s):              1 Processor(s) Installed.
Cores:                     6
Total Physical Memory:     262,030 MB
Available Physical Memory: 178,164 MB
Virtual Memory: Max Size:  300,942 MB
Virtual Memory: Available: 215,377 MB

#Spark 
version 2.4.3

#Java
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
我已使用以下配置设置spark会话:

spark_session = SparkSession \
    .builder \
    .appName("ALSRecommendation") \
    .config("spark.driver.memory","60G")\
    .config('spark.cores.max', 5)\
    .config("spark.driver.cores",5)\
    .getOrCreate();

对于CPU,spark.executor.cores是executor可以运行的并发任务量。有关的更多信息

spark.executor.cores
:1在纱线模式下,工人机上所有可用的芯线都处于独立和Mesos粗粒度模式

编辑:好的,在独立集群中,Spark仅使用提供的资源池管理应用程序预定义的资源配置。()


还可以看到这一点:

您可能可以限制spark在cGroup中的核心使用,但我认为您不想涉足其中

您是否在群集部署模式下运行,因为“spark.driver.cores”仅在使用群集部署模式时生效

尝试显式设置驱动程序和执行程序的内核数量:

(spark.executor.cores=3)
(spark.driver.cores=2)
去掉“spark.core.max”设置

假设你只使用这个主机,你应该得到一个空闲的CPU。
这并不能像您希望的那样解决您的问题,但spark就是这样工作的。

您似乎不是在独立模式(实际上是群集模式)下运行,而是在本地模式(即单个JVM)下运行

要管理本地模式下使用的核心数量,您需要将主机设置为“本地[最大核心数量]”

因此,在您的情况下,这应该按预期工作:

spark_session = SparkSession \
    .builder \
    .appName("ALSRecommendation") \
    .master("local[5]") \
    .config("spark.driver.memory","60G")\
    .getOrCreate();

也许这能帮上忙:@JohnSmith,我已经研究过了,没用。这是关于如何设置CPU核心,而不是如何限制它。阿拉什,
spark.cores.max
是一个
限制
选项。在此上下文中,您将其限制为5个内核。请详细说明您的问题。Arash,您有:Apache Hadoop Thread吗?@JohnSmith,没有。出于测试目的,我正在独立模式下运行它。因为我在独立模式下运行它,所以不需要设置spark.executor.cores,我也尝试过。还是斯派克。