PySpark中的CPU消耗异常高

时间:2017-09-06 08:09:26

标签: apache-spark pyspark

我们有一个适度大的PySpark程序,我们在Mesos集群上运行。

我们使用spark.executor.cores=8spark.cores.max=24运行该计划。每个Mesos节点都有12个vcpu,因此每个节点上只启动了1个执行程序。

程序运行完美,结果正确。

然而,问题是每个执行程序消耗的CPU比8多.CPU负载经常达到25或更多。 使用htop程序,我们可以看到正如预期的那样启动了8个python进程。但是,每个Python都会生成多个线程,因此每个python进程最多可以达到300%的CPU。

htop view

此行为在共享群集部署中很烦人。

有人可以解释这种行为吗? pyspark启动的这3个额外线程是什么?

其他信息:

  • 我们在Spark操作中使用的函数不是多线程的
  • 我们在 local 模式中具有相同的行为,在Mesos之外
  • 我们使用Spark 2.1.1和Python 3.5
  • Mesos节点上没有其他任何东西,除了通常的基本服务
  • 在我们的测试平台中,Mesos节点实际上是OpenStack VM

0 个答案:

没有答案