Spark中的虚拟内存是如何计算的?
Posted
技术标签:
【中文标题】Spark中的虚拟内存是如何计算的?【英文标题】:How is virtual memory calculated in Spark? 【发布时间】:2016-11-01 07:24:57 【问题描述】:我在 Hadoop 上使用 Spark,想知道 Spark 如何将虚拟内存分配给执行程序。
根据 YARN vmem-pmem,它为容器提供 2.1 倍的虚拟内存。
因此 - 如果 XMX 为 1 GB,则 --> 1 GB * 2.1 = 2.1 GB 分配给容器。
它在 Spark 上是如何工作的?下面的说法正确吗?
如果我给 Executor 内存 = 1 GB 那么,
总虚拟内存 = 1 GB * 2.1 * spark.yarn.executor.memoryOverhead。这是真的吗?
如果不是,那么 Spark 中执行器的虚拟内存是如何计算的?
【问题讨论】:
***.com/questions/21005643/…。希望对你有帮助 你能检查我的答案吗? 【参考方案1】:对于 Spark 执行器资源,yarn-client 和 yarn-cluster 模式使用相同的配置:
在 spark-defaults.conf 中,spark.executor.memory 设置为 2 GB。
我是从:Resource Allocation Configuration for Spark on YARN
【讨论】:
按照spark.apache.org/docs/latest/running-on-yarn.htmlexecutorMemory * 0.10,最少384。我想知道哪个是正确的。但我的主要问题是,在 SPARK 的情况下,YARN 是否使用 vmem-pmem(默认 2.1)来计算虚拟内存,然后将开销添加到该内存中?在这种情况下,对于 SPARK 容器的 1GB 内存 - 总虚拟内存变为 1 * 2.1 * 开销?这个说法正确吗? 根据***.com/questions/31646679/…中的问题配置为: spark.executor.memory = 32 GB spark.yarn.executor.memoryOverhead = 6 GB 虚拟内存怎么计算为152 GB(根据错误信息)?是 (32 + 6) * 4 = 152,其中 4 是 yarn.nodemanager.vmem-pmem-ratio?以上是关于Spark中的虚拟内存是如何计算的?的主要内容,如果未能解决你的问题,请参考以下文章