systemMemory = 17179869184 字節(jié)
reservedMemory = 300MB = 300 * 1024 * 1024 = 314572800
usableMemory = systemMemory - reservedMemory = 17179869184 - 314572800 = 16865296384
StorageMemory= usableMemory * spark.memory.fraction
= 16865296384 * 0.6 字節(jié) = 16865296384 * 0.6 / (1000 * 1000 * 1000) = 10.1GB
Spark UI 上面顯示的 Storage Memory 可用內(nèi)存其實等于 Execution 內(nèi)存和 Storage 內(nèi)存之和蛉幸,也就是 usableMemory * spark.memory.fraction
設(shè)置堆外內(nèi)存的參數(shù)為spark.executor.memoryOverhead與
spark.memory.offHeap.size(需要與 spark.memory.offHeap.enabled同時使用),其中
這兩個都是描述堆外內(nèi)存的世剖,但是它們有什么區(qū)別么筋栋?
spark.memory.offHeap.size 真正作用于spark executor的堆外內(nèi)存
spark.executor.memoryOverhead 作用于yarn,通知yarn我要使用堆外內(nèi)存和使用內(nèi)存的大小,相當于spark.memory.offHeap.size + spark.memory.offHeap.enabled窖认,設(shè)置參數(shù)的大小并非實際使用內(nèi)存大小