在 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”不起作用的主要内容,如果未能解决你的问题,请参考以下文章