解惑|很多人对spark内存调优不太理解的配置

浪院长 浪尖聊大数据 今天,星球里有个妹子问了一个问题,问题出自前面的一篇文章:

spark 内存,GC及数据结构调优

其中有段话

她的疑惑是为啥不直接设置:

以减少存储内存的占比。

*大家可以思考一下,减少spark.memory.storageFraction,可行吗? * 明显是不太可行的,这个是没有理解这两个参数的含义。

要知道spark的大部分内存分为执行内存和存储内存。他们共享一个存储空间M。同时,存储内存在执行内存空闲的时候可以占用执行内存空间,执行内存也可以在存储内存大于一个阈值R的时候占用存储内存。R代表缓存不可被清除的最小存储内存。

M和R的计算如下:

然后就会明白,假如我们单纯的减少spark.memory.storageFraction是行不通的,因为存储内存可以占用执行内存进行缓存,缓解不了老年代被吃满的状况,所以只能调整spark.memory.fraction。

**1.当然,除了这样,还可以减少年轻代大小,前提是不影响性能。

2.spark最骚的操作是,没有加内存解决不了的问题,假如有那是没加够。 ** 所以建议大家在学习的时候注意深入细心,然后连贯思考。

关于spark,flink,kafka等大数据框架的疑难杂症,欢迎加入浪尖知识星球,让浪尖帮你解惑。