Spark 2.0 内存分数

7

我正在使用Spark 2.0,工作开始时对输入数据进行排序并将其输出存储在HDFS上。

我曾遇到内存不足的问题,解决方法是将"spark.shuffle.memoryFraction"的值从0.2增加到0.8,这解决了问题。但在文档中,我发现这是一个弃用的参数。

据我理解,它已被"spark.memory.fraction"取代。如何修改此参数,同时考虑到在HDFS上的排序和存储?

1个回答

6

来自文档

尽管有两个相关的配置,但典型用户不需要调整它们,因为默认值适用于大多数工作负载:

  • spark.memory.fraction 表示 M 的大小占 (JVM 堆空间 - 300MB) 的比例(默认值为 0.6)。其余空间(40%)
    保留给用户数据结构、Spark 内部元数据以及在稀疏和异常
    大的记录出现时防止 OOM 错误。
  • spark.memory.storageFraction 表示 R 的大小占 M 的比例(默认值为 0.5)。R 是 M 中的存储空间,其中缓存的
    块不会被执行驱逐。

应该设置 spark.memory.fraction 的值,以便将此堆空间舒适地放置在 JVM 的旧代或“tenured”代中。否则,当大部分空间用于缓存和执行时,tenured 代将变满,这会导致 JVM 显著增加垃圾回收时间。

中,我将修改spark.storage.memoryFraction
作为一个附注,你确定你了解你的工作行为吗?
通常情况下,首先从memoryOverhead、#cores等方面调整你的工作,然后再转向你修改的属性。

剩余的空间(25%)应该是剩余的空间(40%)吗? - Shuai Liu
猜测它已经从@shuailiu发布的时间改变了,谢谢,帖子已更新! - gsamaras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接