“spark.yarn.executor.memoryOverhead”设置的值?
Posted
技术标签:
【中文标题】“spark.yarn.executor.memoryOverhead”设置的值?【英文标题】:The value of "spark.yarn.executor.memoryOverhead" setting? 【发布时间】:2017-04-24 17:58:14 【问题描述】:使用 YARN 的 Spark 作业中 spark.yarn.executor.memoryOverhead
的值应该分配给 App 还是只是最大值?
【问题讨论】:
【参考方案1】:spark.yarn.executor.memoryOverhead
只是最大值。目标是计算 OVERHEAD 占实际执行程序内存的百分比,供 RDD 和 DataFrames 使用
--executor-memory/spark.executor.memory
控制执行程序堆大小,但 JVM 也可以使用一些堆外内存,例如用于内部字符串和直接字节缓冲区。
spark.yarn.executor.memoryOverhead
的值
属性被添加到执行器内存以确定每个执行器对 YARN 的完整内存请求。默认为 max(executorMemory * 0.10, 最小值为 384)。
执行器将使用基于spark.executor.memory
属性的内存分配加上spark.yarn.executor.memoryOverhead
定义的开销
【讨论】:
感谢您的回复。我仍然想知道,我已经为我的工作应用了纱线的内存然后我设置了'spark.yarn.executor.memoryOverhead'的值,这是否意味着它会增加额外的内存为了我的工作? 默认情况下,spark.yarn.am.memoryOverhead 为 AM 内存 * 0.10,最小为 384。这意味着如果我们将 spark.yarn.am.memory 设置为 777M,实际的 AM 容器大小为2G。这是因为777+Max(384, 777 * 0.10) = 777+384 = 1161,并且默认的yarn.scheduler.minimum-allocation-mb=1024,所以2GB的容器会分配给AM。以上是关于“spark.yarn.executor.memoryOverhead”设置的值?的主要内容,如果未能解决你的问题,请参考以下文章