spark参数调优系列 目录地址:
https://blog.youkuaiyun.com/zyzzxycj/article/details/81011540
⑥ Memory Management
spark.memory.fraction
执行内存和缓存内存(堆)占jvm总内存的比例,剩余的部分是spark留给用户存储内部源数据、数据结构、异常大的结果数据。
默认值0.6,调小会导致频繁gc,调大容易造成oom。
spark.memory.storageFraction
用于存储的内存在堆中的占比,默认0.5。调大会导致执行内存过小,执行数据落盘,影响效率;调小会导致缓存内存不够,缓存到磁盘上去,影响效率。
值得一提的是在spark中,执行内存和缓存内存公用java堆,当执行内存没有使用时,会动态分配给缓存内存使用,反之也是这样。如果执行内存不够用,可以将存储内存释放移动到磁盘上(最多释放不能超过本参数划分的比例),但存储内存不能把执行内存抢走。
spark.memory.offHeap.enabled
是否允许使用堆外内存来进行某些操作。默认false
spark.memory.offHeap.size
允许使用进行操作的堆外内存的大小,单位bytes 默认0
spark.memory.useLegacyModes
默认false,不开启,在spark1.5之后就被废弃了,下面三个参数也是。。就不做更多的介绍了:
spark.shuffle.memoryFraction