按照官网的说明:
- spark.executor.memory 默认值:1g
- spark.memory.fraction 默认值:0.6
- spark.memory.storageFraction 默认值:0.5
storageMemory = 1g * 0.6 * 0.5 = 217m, 但是 sparkUI 上显示的是 2GiB.
网上有些文档记录了这个情况,理解可能原因有以下几个:
- jvm 可用的最大内存比 spark.executor.memory 小,这项排除,程序中 jvm 可用内存是 3g+。
- sparkUI 页面的单位换算有 bug,字节换算到 GB 的时候用的是 1000 而不是 1024 ,这项排除,我的 spark 版本是 3.0.0, 这个问题已经被修复: https://issues.apache.org/jira/browse/SPARK-25696 。
- 堆外内存被开启使用:spark.memory.offHeap.enabled=true,这项排除,因为默认情况下是关闭的,我没有在 sparkSession 中开启。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://v2ex.ih06.com/t/842893
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.