我们有一个适度大的PySpark程序,我们在Mesos集群上运行。
我们使用spark.executor.cores=8
和spark.cores.max=24
运行该计划。每个Mesos节点都有12个vcpu,因此每个节点上只启动了1个执行程序。
程序运行完美,结果正确。
然而,问题是每个执行程序消耗的CPU比8多.CPU负载经常达到25或更多。
使用htop
程序,我们可以看到正如预期的那样启动了8个python进程。但是,每个Python都会生成多个线程,因此每个python进程最多可以达到300%的CPU。
此行为在共享群集部署中很烦人。
有人可以解释这种行为吗? pyspark启动的这3个额外线程是什么?
其他信息: