【发布时间】:2016-07-17 22:03:36
【问题描述】:
我正在 ipython 控制台中运行 pyspark 作业。我将 spark master 设置为local[4]。因此,我希望驱动程序有一个内核,应该是一个 Java 进程,而其他三个内核各运行一个 Python 进程。不过,这是我top的截图,
为什么有 16 个 python 进程?为什么不是只有 3 个 python 进程?如果我没记错的话,这台服务器上的内核总数是 16。
【问题讨论】:
-
python为什么要关心java进程?
-
@YOU 根据我对 PySpark 的理解,当 Spark 执行器中的核心需要运行任务时,它会启动一个 Python 进程来进行实际计算。由于我指定了
local[4],因此一个内核将用于驱动程序,而其他三个内核中的每一个都将启动一个 python 进程来计算任务。 -
@Kristian 谢谢。这个视频很有帮助。所以当我将master设置为
local[N]时,Spark会启动一个带有N潜在线程的executor(只有一个JVM)来运行任务。在我的示例中,我有 4 个潜在的线程来运行任务。但视频中也提到Spark也有一些“内部线程”,所以“没有办法让线程数和核心数相匹配”。但这并不能解释为什么有这么多 Python 进程。我想我需要了解 pyspark 的工作原理。
标签: python apache-spark ipython pyspark