Apache spark 限制Apache Spark CPU的使用
我正在使用Apache Spark(独立模式)ALS推荐算法处理60 GB的数据,问题是算法启动时CPU峰值达到100% 如何在spark中设置CPU使用限制? 例如,仅使用50%的CPU 我尝试过使用更少的CPU内核,但它并没有改变CPU使用率 我在具有以下配置的服务器上以独立模式运行spark: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:
#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,我也尝试过。还是斯派克。