【问题标题】:spark default settings on dataproc, especially spark.yarn.am.memory在 dataproc 上触发默认设置,尤其是 spark.yarn.am.memory
【发布时间】:2017-05-02 07:42:43
【问题描述】:

在 google dataproc 上,我想知道 spark 设置是如何确定的?就我而言,我正在运行一个 3 节点 n1-standard-4 集群,自动生成的 spark-defaults.conf 如下所示:

    # User-supplied properties.
    #Fri Dec 16 12:01:47 UTC 2016
    spark.yarn.am.memoryOverhead=558
    spark.executor.memory=5586m
    spark.executor.cores=2
    spark.driver.memory=3840m
    spark.yarn.executor.memoryOverhead=558
    spark.driver.maxResultSize=1920m
    spark.yarn.am.memory=5586m

我想知道为什么要这样设置配置,尤其是为什么 spark.yarn.am.memory 设置那么高?据我了解,此设置仅在客户端模式下生效,驱动程序在提交机器(主机)上运行。此外,AM“仅”负责为工作进程请求资源并协调这些资源。为什么 am.memory 应该那么高?在我的场景中,这个默认设置实际上意味着我只能在客户端模式下启动一个 spark 进程,因为集群中的任何地方都没有可用的 RAM 用于第二个 AM。 (这实际上是我观察到的,也是我首先查看配置的原因)。

那么,我的问题又来了:dataproc 启动脚本如何决定如何设置这些值,其背后的原因是什么,以及为什么 am.memory 应该特别高?

【问题讨论】:

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


    【解决方案1】:

    默认情况下,Dataproc 为 Spark AppMasters 和 Executors 分配给每个 NodeManager 的一半内存(无论节点大小如何)。

    为什么 AppMaster 这么大是个好问题。唯一真正的答案是在小型 VM 上支持 YARN 集群模式。 Dataproc 还针对单租户临时集群进行了优化,因此如果没有其他小容器可以打包,那么缩小 AppMaster 并没有太大帮助。

    Dataproc 团队正在努力改进默认配置(在未来的映像版本中)。如果您有任何建议,非常欢迎您通过 cloud-dataproc-feedback@google.com 与您联系。

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 2021-06-08
      • 2022-11-17
      相关资源
      最近更新 更多