2015-10-07 95 views
2

我现在正在学习this article on Apache Spark architecturespark.shuffle.safetyFraction和spark.storage.safetyFraction的区别

有两个安全级分按描述: spark.shuffle.safetyFractionspark.storage.safetyFraction它们分别给定为0.8及JVM的0.9。 洗牌需要0.2的spark.shuffle.safetyFraction而存储需要0.6的spark.storage.safetyFraction。 给出的图像然而误导(其中一个评论证实了这一点的)

我的问题是:

如何洗牌和存储可以采用0.8和JVM的内存相同的0.9? 他们分享?那么,在最坏的情况下会发生什么?

我GOOGLE了,但没有得到任何这些文件。 任何帮助表示赞赏! :)

回答

0

这些配置仅供内部使用,未向公众公开,请参阅this pull request。您可以改为设置memoryFraction

0

JVM堆可分为三个部分: 存储,执行(随机)和其他 储存:在默认堆大小,由spark.storage.memoryfraction(默认值:0.6)控制60%,而火花。 storage.safetyFraction控制我们可以分配的实际大小,默认为0.9,这意味着我们必须预留10%以避免OOM,在90%的存储中,20%用于展开

洗牌:20%默认情况下堆大小是由spark.shuffle.memoryfraction控制的,但是出于安全原因,我们不能使用它们,所以我们引入了另一个参数来控制它,它是spark.shuffle.safetyFraction,默认为0.8。

其他:保留,堆大小的20%。