0
配置spark工作时,我有时会看到有人建议每个执行器的内核数量大于内核总数除以执行器的数量。执行者可以在火花中共享核心吗?
值得注意的是,在这个example以下是通过@ 0x0FFF建议:
--num-executors 4 --executor-memory 12g --executor-cores 4
如果我们计算执行内核总数,我们得到4 cores per executor
* 4 executors total
= 16 cores total
。
但是,在问题的开头部分,它说“我有一个NameNode和两个DataNode,每个内存30GB,每个4个内核”。因此,核心总数为2 worker nodes
* 4 cores each
= 8 cores
。
是否可以通过4 executors
使用16 cores
这个硬件?如果是这样,怎么样?
它更像是一个CPU内核如何与线程相关的问题,以及什么是最佳配置。在这里看到这可能会帮助你 - http://stackoverflow.com/questions/13834692/threads-configuration-based-on-no-of-cpu-cores – Sumit
我没有'HW'的背景,所以我很难理解你链接的那个问题。我只关心它如何与'spark'作业的配置相关。 “线程”与以下任何一个相关:“核心”,“执行者”,“节点”如何? – Sother
据我所知,Spark会为每个核心旋转一个线程。所以如果一个执行者被赋予了2个内核,那么这个执行者会旋转2个线程并且并行运行2个任务。为可执行程序分配更多内核将不会进行 - 至少不会在YARN上运行。我建议你从Cloudera阅读这篇优秀的博客文章http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/ –