【问题标题】:Spark Yarn Memory configurationSpark Yarn 内存配置
【发布时间】:2019-10-22 16:59:59
【问题描述】:

我有一个 spark 应用程序在出错时一直失败:

“诊断:容器 [pid=29328,containerID=container_e42_1512395822750_0026_02_000001] 运行超出物理内存限制。当前使用情况:使用了 1.5 GB 的 1.5 GB 物理内存;使用了 2.3 GB 的 3.1 GB 虚拟内存。正在杀死容器。”

我看到许多不同的参数被建议更改以增加物理内存。请问下面的参数可以解释一下吗?

  • mapreduce.map.memory.mb(当前设置为 0 所以假设采用默认值 1GB 那么为什么我们将其视为 1.5 GB,更改它也会影响数字)

  • mapreduce.reduce.memory.mb(当前设置为 0 所以假设采用默认值 1GB 那么为什么我们将其视为 1.5 GB,更改它也会影响数字)

  • mapreduce.map.java.opts/mapreduce.reduce.java.opts 设置为前一个数字的 80%

  • yarn.scheduler.minimum-allocation-mb=1GB(更改此设置时,我看到了对最大物理内存的影响,但对于值 1 GB,它仍然是 1.5G)

  • yarn.app.mapreduce.am.resource.mb/spark.yarn.executor.memoryOverhead 在配置中根本找不到。

我们正在使用 cloudera CDH 5.12.1 定义 YARN(以 yarn-cluster 部署模式运行)。

【问题讨论】:

    标签: apache-spark hadoop-yarn


    【解决方案1】:
    spark.driver.memory
    spark.executor.memory
    

    这些控制了 spark 将尝试为其驱动程序和所有执行程序分配的基本内存量。如果内存不足,这些可能是您想要增加的。

    // options before Spark 2.3.0
    spark.yarn.driver.memoryOverhead
    spark.yarn.executor.memoryOverhead
    
    // options after Spark 2.3.0
    spark.driver.memoryOverhead
    spark.executor.memoryOverhead
    

    这个值是当你在 yarn 上运行 Spark 时要请求的额外内存量。它旨在说明托管 Spark 执行器的纱线容器所需的额外 RAM。

    yarn.scheduler.minimum-allocation-mb
    yarn.scheduler.maximum-allocation-mb
    

    当 Spark 请求 Yarn 为执行程序保留一块 RAM 时,它会询问基本内存加上开销内存的值。但是,Yarn 可能无法将其归还给该尺寸。这些参数控制 YARN 将授予的最小容器大小和最大容器大小。如果您仅将集群用于一项工作,我发现将这些设置为非常小和非常大的值,然后使用上面提到的 spark 内存设置来设置真实的容器大小是最简单的。

    mapreduce.map.memory.mb
    mapreduce.map.memory.mb
    mapreduce.map.java.opts/mapreduce.reduce.java.opts
    

    我认为这些对您的 Spark/Yarn 工作没有任何影响。

    【讨论】:

    • 纱线可能无法退还 - 为什么会发生这种情况?
    • 例如,如果你的最小分配设置为 2GB,你要求 1.5GB,yarn 会给你一个 2GB 的容器。
    • 这不是为容器分配的内存吗?如果 spark 数据帧缓存大小变得大于容器内存大小,容器将被杀死。对吗?
    • mapreduce.map.memory.mb 特定于 map reduce 作业。如果 executor 接近最大容器大小,缓存将自动驱逐数据。但是,如果您的实际工作负载需要比最大容器大小更多的内存,那么 yarn 会杀死容器。
    • 在哪里设置spark.driver.memory, spark.executor.memory spark.yarn.executor.memoryOverhead ?是在 yarn-site.xml 还是其他配置文件中?
    猜你喜欢
    • 1970-01-01
    • 2018-05-12
    • 2016-11-15
    • 2014-07-23
    • 2016-02-09
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多