Apache spark apachespark进程的CPU消耗
我有一个有6个物理内核的系统,每个内核有8个硬件线程,形成48个虚拟内核。以下是配置文件中的设置 spark env.sh 导出SPARK\u WORKER\u CORES=1 spark defaults.conf spark.driver.1磁芯 spark.executor.cores 1 spark.cores.max 1 这意味着它应该只使用1个虚拟核,但如果我们看到TOP命令的输出,某个时候,它会有非常大的峰值,例如CPU消耗超过4000,例如Apache spark apachespark进程的CPU消耗,apache-spark,cpu-usage,Apache Spark,Cpu Usage,我有一个有6个物理内核的系统,每个内核有8个硬件线程,形成48个虚拟内核。以下是配置文件中的设置 spark env.sh 导出SPARK\u WORKER\u CORES=1 spark defaults.conf spark.driver.1磁芯 spark.executor.cores 1 spark.cores.max 1 这意味着它应该只使用1个虚拟核,但如果我们看到TOP命令的输出,某个时候,它会有非常大的峰值,例如CPU消耗超过4000,例如 PID USER PR
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22581 sbaig 20 0 0.278t 0.064t 37312 S 4728 6.4 7:11.30 java
....
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22581 sbaig 20 0 0.278t 0.065t 37312 S 1502 6.5 8:22.75 java
...
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22581 sbaig 20 0 0.278t 0.065t 37312 S 4035 6.6 9:51.64 java
...
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22581 sbaig 20 0 0.278t 0.080t 37312 S 3445 8.1 15:06.26 java
...
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22581 sbaig 20 0 0.278t 0.082t 37312 S 4178 8.2 17:37.59 java
...
这意味着,spark没有使用1个虚拟内核,而是使用系统中所有可用的内核,所以我的问题是,为什么它会这样?为什么它在执行我们在SPARK_WORKER_CORES属性中设置的作业时不使用1个core
我使用spark 1.6.1和独立模式
我们将非常感谢您的帮助。
谢谢
Shuja根据您提供的信息,您似乎只在spark-defaults.conf文件中设置信息 为了在spark应用程序中应用此配置,您必须在创建spark上下文时,在代码的
SparkConf
对象中配置这三个属性,如下所示
var conf = new SparkConf()
conf.set("spark.driver.cores","1")
conf.set("spark.executor.cores","1")
conf.set("spark.cores.max","1")
或者,如果您正在使用spark submit CLI提交应用程序,则可以使用驱动程序核心,运行应用程序时,
--executor cores
和--conf spark.cores.max=1
选项。如果您在spark-defaults.conf中提及,则无需在其他任何地方重复这些属性。要覆盖默认特性时,将使用此处描述的设置。希望我能向你说清楚。你找到解决同样问题的方法了吗?我有完全相同的问题。