在我的sparkconf中,我可以设置要使用的内核数量,我的笔记本电脑上有4个物理内存,8个逻辑内存,如果我指定机器上无法使用的数字,例如100个内核,那么它会起什么作用?
答案 0 :(得分:9)
核心数量不描述物理核心,而是描述许多正在运行的线程。这意味着如果数量高于可用核心数,则不会发生任何奇怪的事情。
根据您的设置,它实际上可能是一种首选配置,其值大约是可用内核数量的两倍,这是通常建议的设置。显然,如果数量很高,您的应用程序将花费更多时间在线程之间切换而不是实际处理。
答案 1 :(得分:1)
这在很大程度上取决于您的集群管理器。我假设你问的是local[n]
运行模式。
如果是这样,驱动程序和唯一的一个执行程序是具有n
个线程数的相同JVM。
DAGScheduler
- Spark执行计划程序将使用n
个线程来安排尽可能多的任务。
如果你有更多的任务,即线程,而不是核心,你的操作系统将不得不处理比核心更多的线程并适当地安排它们。