spark内存概述

方便修改贴github地址: spark-knowledge系列

spark进程是以JVM进程运行的,可以通过-Xmx和-Xms配置堆栈大小,它是如何使用堆栈呢?下面是spark内存分配图。

image
image

storage memory

spark默认JVM堆为512MB,为了避免OOM错误,只使用90%。通过spark.storage.safetyFraction来设置。spark通过内存来存储需要处理的数据,使用安全空间的60%,通过 spark.storage.memoryFraction来控制。如果我们想知道spark可以缓存多少数据?假设使用executors数为N,那么缓存数据为N*90%*60%*512MB。

shuffle memory

shuffle memory的内存为“Heap Size” * spark.shuffle.safetyFraction * spark.shuffle.memoryFraction。默认spark.shuffle.safetyFraction 是 0.8 , spark.shuffle.memoryFraction是0.2 ,因此shuffle memory为 0.8*0.2*512MB = 0.16*512MB

unroll memory

unroll memory的内存为spark.storage.unrollFraction * spark.storage.memoryFraction * spark.storage.safetyFraction,即0.2 * 0.6 * 0.9 * 512MB = 0.108 * 512MB。unroll memory用作数据序列化和反序列化。

参考文献

spark 框架

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容