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中的虚拟内存是如何计算的?的主要内容,如果未能解决你的问题,请参考以下文章

windows中的虚拟内存管理技术是指使用啥来运行应用程序

虚拟内存是啥东西?有啥用?如果虚拟内存不足会有啥危害?如何调整虚拟内存的大小?

什么是虚拟内存?为什么说我的虚拟内存中没有足够的自由空间?

操作系统-虚拟内存

怎么清除虚拟内存?pagefile.sys

Linux虚拟内存机制