apache-spark - dataproc 上的任务数量多于 vCPU 数量

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

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

使用 12+1(master) n1-standard-4 机器运行 dataproc 集群。这提供了 48 个可用的 vcore,每台机器有 15GB RAM。我们启动了我们的 spark 应用程序

spark.executor.cores = 4

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

Spark monitor

YARN 监视器还告诉我们有 24 个容器,尽管应该有 12 个(每个有 4 个内核)。

enter image description here

最佳答案

请检查每个节点的 CPU 数量和每个 CPU 的线程数量,并验证您是否拥有与您所说的一样多的内核。

关于apache-spark - dataproc 上的任务数量多于 vCPU 数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46295436/

相关文章:

hadoop - 当spark master设置为LOCAL时,SparkSession对象不存在HDFS路径

apache-spark - 从作业实际运行位置以外的其他位置访问 Spark Web UI

hadoop - Google Cloud Platform上的预定mapreduce作业

java - 您如何使用 Google DataProc Java 客户端使用关联的 GS 存储桶中的 jar 文件和类提交 spark 作业?

java - 在 Spark StandAlone 上使用 Logback 进行日志记录

apache-spark - 如何在 pyspark 流应用程序中使用具有不同主题的两个不同流将数据从 Kafka 存储到 Redis?

hadoop - YARN 提示 java.net.NoRouteToHostException : No route to host (Host unreachable)

apache-spark - Spark : Understanding Dynamic Allocation

java - Spring Boot YARN 不运行在 Hadoop 2.8.0 客户端无法访问 DataNode

import - 在google-dataproc的Spark集群的pyspark作业中使用外部库