如果我尝试使用比我更多的内核会发生什么?

时间:2016-01-20 23:13:08

标签: apache-spark

在我的sparkconf中,我可以设置要使用的内核数量,我的笔记本电脑上有4个物理内存,8个逻辑内存,如果我指定机器上无法使用的数字,例如100个内核,那么它​​会起什么作用?

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:1)

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

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

DAGScheduler - Spark执行计划程序将使用n个线程来安排尽可能多的任务。

如果你有更多的任务,即线程,而不是核心,你的操作系统将不得不处理比核心更多的线程并适当地安排它们。