spark.storage.memoryFraction Apache Spark 中的设置
spark.storage.memoryFraction setting in Apache Spark
根据 Spark 文档
spark.storage.memoryFraction
:Java 堆的一部分用于 Spark 的内存缓存。这不应大于 JVM 中对象的 "old" 代,默认情况下,堆的大小为 0.6,但如果您配置自己的老年代大小,则可以增加它。
我发现一些博客和文章建议在 yarn 模式下将其设置为零。为什么这比将它设置为接近 1 的值更好?一般来说,它的合理价值是多少?
Spark 执行器设置为 3 个区域。
- 存储 - 为缓存保留的内存
- 执行 - 为对象创建保留的内存
- 执行器开销。
在 Spark 1.5.2 及更早版本中:
spark.storage.memoryFraction 设置为 1 和 2 设置的内存比率。默认值为 .6,因此分配的执行程序内存的 60% 保留用于缓存。根据我的经验,我只发现数量减少了。通常,当开发人员遇到 GC 问题时,应用程序具有更大的 "churn" 对象,而优化的首要位置之一是更改 memoryFraction。
如果您的应用程序不缓存任何数据,那么您应该将其设置为 0。不确定为什么这会特定于 YARN,你能 post 文章吗?
在 Spark 1.6.0 及更高版本中:
内存管理现已统一。存储和执行共享堆。所以这不再适用了。
根据 Spark 文档
spark.storage.memoryFraction
:Java 堆的一部分用于 Spark 的内存缓存。这不应大于 JVM 中对象的 "old" 代,默认情况下,堆的大小为 0.6,但如果您配置自己的老年代大小,则可以增加它。
我发现一些博客和文章建议在 yarn 模式下将其设置为零。为什么这比将它设置为接近 1 的值更好?一般来说,它的合理价值是多少?
Spark 执行器设置为 3 个区域。
- 存储 - 为缓存保留的内存
- 执行 - 为对象创建保留的内存
- 执行器开销。
在 Spark 1.5.2 及更早版本中:
spark.storage.memoryFraction 设置为 1 和 2 设置的内存比率。默认值为 .6,因此分配的执行程序内存的 60% 保留用于缓存。根据我的经验,我只发现数量减少了。通常,当开发人员遇到 GC 问题时,应用程序具有更大的 "churn" 对象,而优化的首要位置之一是更改 memoryFraction。
如果您的应用程序不缓存任何数据,那么您应该将其设置为 0。不确定为什么这会特定于 YARN,你能 post 文章吗?
在 Spark 1.6.0 及更高版本中:
内存管理现已统一。存储和执行共享堆。所以这不再适用了。