我是靠谱客的博主 懵懂铅笔,最近开发中收集的这篇文章主要介绍11. Spark内存管理1. 静态内存管理分布图2. 统一内存管理分布图3. reduce 中OOM如何处理?,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
描述:
Spark执行应用程序时,Spark集群会启动Driver和Executor两种JVM进程,Driver负责创建SparkContext上下文,提交任务,task的分发等。Executor负责task的计算任务,并将结果返回给Driver。同时需要为需要持久化的RDD提供储存。Driver端的内存管理比较简单,这里所说的Spark内存管理针对Executor端的内存管理。
Spark内存管理分为 静态内存管理 和 统一内存管理,Spark1.6之前使用的是静态内存管理,Spark1.6之后引入了统一内存管理。
静态内存管理中存储内存、执行内存和其他内存的大小在 Spark 应用程序运行期间均为固定的,但用户可以应用程序启动前进行配置。
统一内存管理与静态内存管理的区别在于储存内存和执行内存共享同一块空间,可以互相借用对方的空间。
Spar1.6及1.6版本之后的版本默认使用的是统一内存管理
要想使用静态内存可以通过参数spark.memory.useLegacyMode
设置为true(默认为false)使用静态内存管理。
1. 静态内存管理分布图
2. 统一内存管理分布图
3. reduce 中OOM如何处理?
- 减少每次拉取的数据量
- 提高shuffle聚合的内存比例
- 提高Excutor的总内存
最后
以上就是懵懂铅笔为你收集整理的11. Spark内存管理1. 静态内存管理分布图2. 统一内存管理分布图3. reduce 中OOM如何处理?的全部内容,希望文章能够帮你解决11. Spark内存管理1. 静态内存管理分布图2. 统一内存管理分布图3. reduce 中OOM如何处理?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复