首页 > 解决方案 > Spark 中的核心数与线程数

问题描述

几个月前我已经开始学习 spark 并且正在研究架构并得到以下疑问。当 spark 驱动程序向纱线请求资源(核心和内存)时,纱线是否提供实际的核心或线程。spark中的内核数和线程数之间是否有任何关系(一般来说没有)。Yarn/OS 在 CPU 和内核上提供了一个抽象层,因此根据我的理解,当驱动程序请求资源(内核)时,它将获取线程。所以实际上我们可以拥有比 CPU 更多的线程,我的理解是否正确。有什么方法可以识别用于执行任务的核心(不是线程)。

我浏览了链接(Apache Spark:核心数与执行程序数),它解释了核心和执行程序之间的关系,而不是核心和线程之间的关系。一个执行器可以有 4 个核心,每个核心可以有 10 个线程,因此一个执行器可以并行运行 10*4 = 40 个任务。或者它在执行程序中只有 4 个任务。

如果我们每个核心可以有更多线程,有没有一种方法可以告诉 spark 每个核心启动 10 个线程。

所以一行中的问题是:当我说启动 2 个执行器,每个执行器有 4 个核心时,我们总共得到 8 个核心还是 8 个线程。

标签: apache-sparkpysparkhadoop-yarn

解决方案


推荐阅读