【问题标题】:Where to set "spark.yarn.executor.memoryOverhead"在哪里设置“spark.yarn.executor.memoryOverhead”
【发布时间】:2019-01-05 05:49:29
【问题描述】:

运行我的 spark-scala 程序时出现以下错误。

YarnSchedulerBackends$YarnSchedulerEndpoint:容器因超出内存限制而被 YARN 杀死。使用了 2.6GB 的 2.5GB 物理内存。考虑提升 spark.yarn.executor.memoryOverhead。

我在创建 SparkSession 时在程序中设置了 spark.yarn.executor.memoryOverhead。

我的问题是 - 在创建 SparkSession 时设置“spark.yarn.executor.memoryOverhead”是否可以,还是应该在运行时使用 spark-submit 传递?

【问题讨论】:

    标签: apache-spark spark-submit


    【解决方案1】:

    您必须在创建 sparkSession 时设置spark.yarn.executor.memoryOverhead。此参数用作每个执行程序分配的堆外内存量(以兆字节为单位)。这是占 VM 开销、实习字符串、其他本机开销等的内存。这往往会随着执行程序的大小(通常为 6-10%)而增长。

    现在这个分配只能在执行器分配时完成,而不是在运行时完成。

    【讨论】:

    • 当 deployMode 是集群或客户端时,这对两者都适用吗?
    • 如果我在 spark-submit 期间设置或者在创建 SparkSession 时使用 config 设置也可以吗?
    • 两者基本相同,spark 提交配置仅用于创建 spark 会话。因此,您在 spark 提交时传递配置或在创建 sparksession 时使用两者都是相同的。在 spark 提交时传递配置很方便,因为如果您想更改参数,则无需更改代码
    • 谢谢!我面临的情况是,我从列出所有配置的文本文件中读取所有配置,然后将它们传递给 SparkSession.config(key, value)。但不知何故,这些都没有设置好。我花了一整天的时间弄清楚但没有任何线索。我可能做错了什么?
    • 这个问题你也看看:stackoverflow.com/questions/51576667/…
    猜你喜欢
    • 2017-04-24
    • 2019-01-29
    • 2019-04-02
    • 2020-03-07
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多