我有一个带有6个物理内核的系统,每个内核有8个硬件线程,产生48个虚拟内核。以下是配置文件中的设置。apache spark过程的CPU消耗
spark-env.sh
出口SPARK_WORKER_CORES = 1
火花defaults.conf
spark.driver.cores 1
spark.executor.cores 1
spark.cores.max 1
所以这意味着它应该只使用1个虚拟内核,但是如果我们看到TOP命令的输出,有一段时间,它有非常大的高峰,例如CPU消耗高于4000
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
...
这意味着,而是采用1个虚拟核心,所以我的问题是,为什么它的行为就像这个火花使用所有可用的核心系统?为什么它在执行我们在SPARK_WORKER_CORES属性中设置的作业期间不仅仅使用1个内核。
我在独立模式下使用spark 1.6.1。
任何帮助将不胜感激。 谢谢 Shuja
如果您在spark-defaults.conf中提及,那么不需要在其他地方重复这些属性。当您要覆盖默认属性时使用您在此处描述的设置。希望我向你说清楚。 – Shuja