Apache spark中的spark.storage.memoryFraction设置



根据Spark文档

spark.storage.memoryFraction:用于Spark内存缓存的Java堆的一部分。这不应该大于JVM中对象的"旧"一代,默认情况下为0.6的堆,但如果您配置自己的旧一代大小,则可以增加它。

我发现有几篇博客和文章建议在纱线模式下将其设置为零。为什么这比将其设置为接近1要好?一般来说,它的合理价值是多少?

Spark执行器被设置为3个区域。

  1. Storage—为缓存保留的内存
  2. Execution-为创建对象保留的内存
  3. 执行器开销

在Spark 1.5.2及更早版本中:

spark.storage.memoryFraction为1和2设置内存集的比率。默认值为.6,因此分配的执行器内存的60%保留用于缓存。根据我的经验,我只发现这个数字减少了。通常,当开发人员遇到GC问题时,应用程序的对象会发生更大的"变动",而优化的首要位置之一就是更改memoryFraction。

如果你的应用程序没有缓存任何数据,那么你应该将其设置为0。不确定为什么这是YARN特有的,你能发布文章吗?

在Spark 1.6.0及更高版本中:

内存管理现已统一。存储和执行都共享堆。所以这已经不适用了。

相关内容

  • 没有找到相关文章