Spark 2.0内存分数

时间:2016-09-23 12:05:49

标签: memory apache-spark out-of-memory distributed-computing apache-spark-2.0

我正在使用Spark 2.0,这项工作首先是对输入数据进行排序并将其输出存储在HDFS上。

我出现了内存错误,解决方法是将“spark.shuffle.memoryFraction”的值从0.2增加到0.8,这就解决了这个问题。但是在文档中我发现这是一个弃用的参数。

据我所知,它被“spark.memory.fraction”取代。如何在考虑HDFS的排序和存储的同时修改此参数?

1 个答案:

答案 0 :(得分:4)

来自documentation

  

虽然有两个相关配置,但典型用户   不应该调整它们,因为默认值适用   大多数工作量:

     
      
  • spark.memory.fraction将M的大小表示为(JVM堆空间 - 300MB)的一小部分(默认值为0.6)。余下的空间(25%)
      保留用户数据结构,Spark中的内部元数据和   在稀疏和异常情况下保护OOM错误   大记录。
  •   
  • spark.memory.storageFraction将R的大小表示为M的一小部分(默认为0.5)。 R是M中缓存的存储空间   阻止被执行驱逐。
  •   
     

应设置spark.memory.fraction的值以适应此情况   在JVM的旧版或“终身”内轻松堆积空间   代。否则,当大部分空间用于缓存时   执行时,终身代将会满,这会导致JVM   大大增加垃圾收集的时间。

中,我会修改spark.storage.memoryFraction

作为旁注,你确定你了解你的工作表现如何吗?

通常首先从memoryOverhead,#cores等开始微调你的工作,然后转到你修改的属性。