执行者可以在火花中共享核心吗?

Can executors share cores in spark?

在配置spark作业时,我有时看到有人建议每个执行器的核心数大于核心总数除以执行器数。

值得注意的是,在这个 中,@0x0FFF 建议以下内容:

--num-executors 4 --executor-memory 12g --executor-cores 4

如果我们计算执行器内核的总数,我们会得到 4 cores per executor * 4 executors total = 16 cores total.
但是,在问题的开头它说 "I have one NameNode and two DataNode with 30GB of RAM each, 4 cores each"。因此,核心总数为 2 worker nodes * 4 cores each = 8 cores

是否可以让 4 executors 使用此硬件使用 16 cores?如果是这样,如何?

因此,正如我在评论中所写,Spark 将为每个内核旋转一个线程,并且 我知道对于 YARN,您不能分配比执行程序可用的更多的内核。如果这样做,它根本不会启动那些执行程序。 Cloudera 的 this blog post 中也对此进行了更详细的描述。