我有一個帶有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