在 Spark 中设置“spark.memory.storageFraction”不起作用

Posted

技术标签:

【中文标题】在 Spark 中设置“spark.memory.storageFraction”不起作用【英文标题】:Setting "spark.memory.storageFraction" in Spark does not work 【发布时间】:2017-04-20 06:51:20 【问题描述】:

我正在尝试调整 Spark 的内存参数。 我试过了:

sparkSession.conf.set("spark.memory.storageFraction","0.1") //sparkSession has been created

在我提交作业并检查 Spark UI 之后。我发现“存储记忆”还是和以前一样。所以上面没有工作。

设置“spark.memory.storageFraction”的正确方法是什么?

我使用的是 Spark 2.0。

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题,看了spark github上的一些代码后,我认为spark ui上的“Storage Memory”有误导性,它并不是表示存储区域的大小,实际上它代表的是maxMemory:

maxMemory =  (executorMemory - reservedMemory[default 384]) * memoryFraction[default 0.6]

查看这些了解更多详情↓↓↓

spark ui executors-page source code

getMaxmemory source code

【讨论】:

现在在 Spark UI 中修复了吗? Spark UI 的 Executors 选项卡中的存储内存是什么意思?【参考方案2】:

根据docs spark.memory.storageFraction 选项仅配置“存储内存量免疫驱逐,而不是上限。实际上所有不用于执行的内存都可以用于存储和存储内存的上限,假设没有内存用于执行,因此是:(executor memory - reserved memory) * memoryFraction)。 另见Memory Management Overview。

在 UI 中列的工具提示中,他们正确地声明它显示了“用于存储的总可用内存...”

这意味着您不会在您可能正在查看的 UI 列中看到 spark.memory.storageFraction 的效果。

【讨论】:

以上是关于在 Spark 中设置“spark.memory.storageFraction”不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Apache Spark 内存管理详解

Spark Memory Tuning (内存调优)

Spark:MEMORY_ONLY_SER_2 - 奇怪的内存行为

内存不足错误的 Spark 配置

spark性能调优:内存

spark on yarn container分配极端倾斜