按照官网的说明:
storageMemory = 1g * 0.6 * 0.5 = 217m, 但是 sparkUI 上显示的是 2GiB.
网上有些文档记录了这个情况,理解可能原因有以下几个:
1
heyyyy OP 更正一下:storageMemory = (1g-300m) * 0.6 * 0.5 = 217m
|
2
disk 2022-03-25 19:12:26 +08:00
你这算的有问题,storageMemory < (1g-300m) * 0.6 ,和 spark.memory.storageFraction 没关系。我在 3.2 上是正常的,你看下 Memory per Executor 是不是正确。
|
3
heyyyy OP @disk (1g-300m) * 0.6 得到的是包括 ExecutionMemory 和 StorageMemory 的内存大小。
|
4
disk 2022-03-25 20:07:42 +08:00 1
@heyyyy 对的,ExecutionMemory 和 StorageMemory 是共享内存的,spark.memory.storageFraction 只决定其中最大不可驱逐缓存的比例,和实际的 StorageMemory 没有关系。
|
5
heyyyy OP @disk 谢谢大佬,client 模式下,sparkConf 中的 spark.executor.memory 不会生效,因为执行到那行的时候 jvm 已经启动过了。我的 jvm 参数是-Xmx4g ,spark 拿到的是 3.6g ,减去 ReservedMemory 的 300m 再乘以 0.6 跟 sparkUI 是一致的。
|
6
tinkerer 2022-03-25 21:28:09 +08:00
跟踞 > 根据
|