Spark:驱动程序/工作程序配置.驱动程序是否在主节点上运行?

Eda*_*ame 6 java scala amazon-web-services apache-spark

我在AWS上启动了一个Spark集群,其中包含一个主集群和60个核心:

在此输入图像描述

这是启动命令,每个核心基本上有2个执行程序,共有120个执行程序:

spark-submit --deploy-mode cluster --master yarn-cluster --driver-memory 180g --driver-cores 26 --executor-memory 90g --executor-cores 13 --num-executors 120
Run Code Online (Sandbox Code Playgroud)

但是,在求职者中,只有119个执行者:

在此输入图像描述

我以为应该有1个驱动程序+ 120个执行程序.但是,我看到的是119个执行者,其中包括1个驱动程序+ 118个工作执行程序.

这是否意味着我的主节点没有被使用?驱动程序是在主节点还是核心节点上运行?我可以让驱动程序在主节点上运行,让60个核心托管120个工作执行程序吗?

谢谢!

Rav*_*abu 6

纱线群集模式下,驱动程序在Application Master中运行。这意味着相同的过程负责驱动应用程序和从YARN请求资源,并且该过程在YARN容器中运行。启动应用程序的客户端在整个生命周期中都不需要坚持。

在此处输入图片说明

yarn-client模式下,Spark驱动程序在启动Spark应用程序的客户端进程中运行。

在此处输入图片说明

请查看cloudera博客以获取更多详细信息。

  • 我的意思是主节点实例:cr1.8xlarge,应用程序主节点是否在那里运行?如果是这样,为什么其他 60 个 cr1.8xlarge 实例中只有 118 个工作执行程序而不是 120 个工作执行程序?谢谢! (2认同)

Dim*_*mos 6

通过使用cluster-mode,资源分配具有下图所示的结构。

在此处输入图片说明

我将尝试举例说明 YARN 对资源分配的计算。首先,每个核心节点的规格如下(您可以在这里确认):

  • 内存:244GB
  • 核心/vCPU:32

这意味着您最多可以运行:

  • 每个核心节点 2 个执行程序,这是根据请求的内存和核心数计算的。具体来说,available_cores / requested_cores = 32 / 13 = 2.46 -> 2& available_mem / requested_mem = 244 / 90 = 2.71 = 2
  • 单个驱动程序,单个核心节点中没有更多的执行程序。这是因为当驱动程序在核心节点中运行时,它会留下 244 - 180 = 64 GB 的内存和 32 和 32-26 = 6 个核心/vCPUS,这不足以运行单独的执行程序。

因此,在现有的 60 个核心节点池中,1 个节点用于驱动程序,剩下 59 个核心节点,它们正在运行 59*2 = 118 个执行程序。

这是否意味着我的主节点没有被使用?

如果您的意思是是否使用主节点来执行驱动程序,那么答案是否定的。但是,请注意,在此期间,master 可能正在运行许多其他应用程序,这些应用程序超出了本讨论的范围(例如 YARN 资源管理器、HDFS namenode 等)。

驱动是在Master节点还是Core节点上运行?

后者,驱动程序在核心节点上运行(因为您使用了--deploy-mode cluster参数)。

我可以让驱动程序在主节点上运行,让 60 个内核托管 120 个工作执行器吗?

是的!这样做的方法是执行相同的命令,但--deploy-mode client在主节点中使用(或不指定该参数,因为在撰写本文时,Spark 将其用作默认值)。

通过这样做,资源分配将具有下图所示的结构。

在此处输入图片说明

请注意,Application Master 仍然会从集群中消耗一些资源(“从执行器那里窃取一些资源)。但是,AM 资源默认是最小的,正如可以在这里看到的(spark.yarn.am.memoryspark.yarn.am.cores选项),所以它不应该有很大的影响。


Ham*_*ari 2

当您运行yarn-cluster模式时,应用程序的驱动程序在集群中运行,而不是在您运行spark Submit的机器上运行。这意味着它将占用集群上的驱动程序核心数量,导致您看到的有 119 个执行程序。

如果您想在集群外部运行驱动程序,请尝试yarn-client模式。

有关在 YARN 上运行的更多详细信息,请访问: http: //spark.apache.org/docs/latest/running-on-yarn.html