比数据流上的数字vCPU更多的数字任务

时间:2017-09-19 08:23:14

标签: apache-spark yarn google-cloud-dataproc

我们正在观察一些关于数据采集器上执行器和任务数量的奇怪行为。我们的理解是(理论上)集群中可用的核心数量将限制可以并行运行的任务数量:32个核心意味着最多32个任务。然而,在数据中心中,我们经常观察到一些不同的行为,基本上是理论上可能的并发任务的双倍数。这是一个例子:

使用12 + 1(主)n1-standard-4计算机运行数据中心群集。这为每台机器提供了48个可用的vcores,每个内存为15GB。我们用

启动我们的spark应用程序
spark.executor.cores = 4

...应该给我们12个执行器,每个执行器能够并行运行4个任务,即48个并行任务,而未充分利用内存,因为数据采集器将自动分配spark.executor.memory = 5586m。然而,实际发生的事情是我们似乎最终有24个执行器,并行运行总共92个任务,因此(几乎)快两倍。我们不明白为什么。

Spark monitor

YARN监视器还告诉我们有24个容器,虽然应该有12个容器(每个容器有4个核心)。

enter image description here

1 个答案:

答案 0 :(得分:2)

请检查每个节点的CPU数量和每个CPU的线程数,并验证您是否拥有尽可能多的内核。