【问题标题】:Spark Driver memory and Application Master memorySpark Driver 内存和 Application Master 内存
【发布时间】:2018-10-28 08:18:30
【问题描述】:

我是否正确理解了客户端模式的文档?

  1. 客户端模式与驱动程序在应用程序主机中运行的集群模式相反?
  2. 在客户端模式下,驱动程序和应用程序主机是独立的进程,因此spark.driver.memory + spark.yarn.am.memory 必须小于机器的内存?
  3. 在客户端模式下,驱动程序内存是否未包含在应用程序主内存设置中?

【问题讨论】:

  • 您好,如果任何答案解决了您的问题,请考虑accepting it 或添加您自己的解决方案。因此,它向更广泛的社区表明您找到了解决方案。

标签: apache-spark hadoop hadoop-yarn


【解决方案1】:

客户端模式与驱动程序在主应用程序中运行的集群模式相反?

是的,当 Spark 应用程序部署在 YARN 上时

  • 客户端模式,驱动程序将在提交应用程序的机器上运行,并且该机器必须在网络中可用,直到应用程序完成。
  • 集群模式,驱动将运行在application master(每个spark应用一个)节点中,提交应用的机器提交后无需联网

客户端模式

集群模式

如果 Spark 应用程序在其自己的资源管理器(独立)上以 集群模式 提交,则驱动程序进程将位于其中一个工作节点中。

图片和内容参考:

在客户端模式下,驱动程序和应用程序主机是独立的进程,因此spark.driver.memory + spark.yarn.am.memory 必须小于机器的内存?

,在客户端模式下,driver和AM是独立的进程,存在于不同的机器,所以内存不需要合并,但spark.yarn.am.memory + some overhead 应该小于 YARN 容器内存(yarn.nodemanager.resource.memory-mb)。如果超过 YARN 的资源管理器会杀死容器。

在客户端模式下,驱动程序内存是否不包含在应用程序主内存设置中?

这里的spark.driver.memory 必须小于启动 spark 应用程序的机器中的可用内存。

但是,在集群模式下使用spark.driver.memory 而不是spark.yarn.am.memory

spark.yarn.am.memory:512m(默认)

在客户端模式下用于 YARN Application Master 的内存量,与 JVM 内存格式相同 字符串(例如512m, 2g)。在集群模式下,使用spark.driver.memory 反而。使用小写后缀,例如k, m, g, t, 和 p, 对于 kibi-, 分别为 mebi-、gibi-、tebi- 和 pebibytes。

查看more about these properties here

【讨论】:

  • 反响很好。澄清一下,应用程序主从资源管理器请求资源。但是应用程序主节点自己是否创建了 Yarn Containers 和 Spark executors?
  • 谢谢。这将在 YARN 处理,Application master 根据数据大小通知/请求 RM,以及让 Yarn 容器在内部运行 Spark 执行器的配置。
【解决方案2】:

在客户端模式下,驱动程序直接在 spark-submit 中启动,即客户端程序。要在集群中的任何一个节点中创建的应用程序主节点。 spark.driver.memory(+内存开销)要小于机器的内存。

在集群模式下,驱动程序在集群中任何节点的应用程序主控内运行。

https://blog.cloudera.com/blog/2014/05/apache-spark-resource-management-and-yarn-app-models/

【讨论】:

  • 链接中的哪个位置说 AM 和驱动程序在同一个进程中?
  • 更新了我的回复。 AM 可以在集群中的任何一个节点上运行,而不是在客户端机器上。
猜你喜欢
  • 2018-03-30
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
相关资源
最近更新 更多