2016-01-20 45 views
5

在我的sparkconf中,我可以设置要使用的内核数量,我的笔记本电脑上有4个物理,8个逻辑,如果我指定的机器上不可能有数字,例如100个内核,火花会做些什么?如果我尝试使用比我更多的内核,会发生什么情况?

+1

在本地模式下运行spark的实验中,我看到了设置'master =“local [4 * physical cores]'''的好结果。它将我的CPU利用率从40%左右提高到80%左右。绝对值得尝试配置Spark使用比可用物理内核多2,4或8倍的线程。 – asmaier

回答

7

核心数量不描述物理核心,而是描述正在运行的线程数量。这意味着如果该数字高于多个可用内核,则不会发生任何奇怪的事情。

根据您的设置,它可能实际上是一个首选配置,其值为通常推荐设置的可用内核数量的两倍左右。很显然,如果数量太高,应用程序将花费更多时间在线程之间切换而不是实际处理。

0

它很大程度上取决于您的群集管理器。我假设你在询问local[n]运行模式。

如果是这样,那么驱动程序和唯一的一个执行程序与具有n线程数的JVM相同。

DAGScheduler - Spark执行计划程序将使用n线程安排尽可能多的任务,如您所说的。

如果你有更多的任务,比如线程,那么你的操作系统将不得不处理比内核更多的线程并且适当地调度它们。

相关问题