【问题标题】:Spark client mode - YARN allocates a container for driver?Spark 客户端模式 - YARN 为驱动程序分配一个容器?
【发布时间】:2019-01-06 00:37:10
【问题描述】:

我在客户端模式下在 YARN 上运行 Spark,所以我希望 YARN 只会为执行程序分配容器。然而,据我所见,似乎还为驱动程序分配了一个容器,但我没有得到预期的那么多执行者。

我在主节点上运行 spark submit。参数如下:

sudo spark-submit --class ... \
    --conf spark.master=yarn \
    --conf spark.submit.deployMode=client \
    --conf spark.yarn.am.cores=2 \
    --conf spark.yarn.am.memory=8G  \
    --conf spark.executor.instances=5 \
    --conf spark.executor.cores=3 \
    --conf spark.executor.memory=10G \
    --conf spark.dynamicAllocation.enabled=false \

运行此应用程序时,Spark UI 的 Executors 页面显示 1 个驱动程序和 4 个执行程序(总共 5 个条目)。我希望有 5 个,而不是 4 个执行者。 同时,YARN UI 的 Nodes 选项卡显示在实际未使用的节点上(至少根据 Spark UI 的 Executors 页面...)分配了一个容器,使用 9GB 内存。其余节点上运行着容器,每个 11GB 内存。

因为在我的 Spark Submit 中驱动程序的内存比执行程序少 2GB,我认为 YARN 分配的 9GB 容器是给驱动程序的。

为什么要分配这个额外的容器?我怎样才能防止这种情况发生?

火花用户界面:

纱线用户界面:


Igor Dvorzhak 回答后更新

我错误地假设 AM 将在主节点上运行,并且它将包含驱动程序应用程序(因此设置 spark.yarn.am.* 设置将与驱动程序进程相关)。

所以我做了以下更改:

  • spark.yarn.am.* 设置设为默认值(512m 内存,1 个核心)
  • 通过spark.driver.memory设置驱动内存为8g
  • 根本没有尝试设置驱动内核,因为它只对集群模式有效

因为默认设置下的 AM 占用 512m + 384m 的开销,所以它的容器适合工作节点上的 1GB 空闲内存。 Spark 得到它请求的 5 个执行器,驱动内存适合 8g 设置。现在一切正常。

火花用户界面:

纱线用户界面:

【问题讨论】:

    标签: apache-spark hadoop-yarn


    【解决方案1】:

    YARN application master分配了额外的容器:

    在客户端模式下,驱动运行在客户端进程中,应用主程序仅用于向YARN请求资源。

    即使在客户端模式下驱动程序在客户端进程中运行,YARN application master 仍然在 YARN 上运行并且需要容器分配。

    没有办法阻止为 YARN 应用程序主服务器分配容器。

    供参考,前段时间问过类似问题:Resource Allocation with Spark and Yarn

    【讨论】:

    • 谢谢。我假设驱动程序仍然在 AM 进程中运行(如在集群模式下),只是 AM 在主节点上运行,而不是在工作节点上运行。这就是我设置 AM 内存和内核的原因,我认为这将是驱动程序进程。
    【解决方案2】:

    您可以在 spark submit 中指定驱动程序内存和执行器数量,如下所示。

    spark-submit --jars..... --master yarn --deploy-mode cluster --driver-memory 2g --driver-cores 4 --num-executors 5 --executor-memory 10G --执行器核心 3

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 2021-07-06
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多