Spark 集群会启动 Driver 和 Executor 两种 JVM 进程

我们只关注Executor的内存.

分为堆内内存和堆外内存

内存分为

存储内存 : 存储数据用的.

执行内存: 执行shuffle时占用的.

其他内存: 用户自定义的对象.

堆内内存

这是由jvm管理.spark自己不知道,只能spark自己估算,有时准,有时不准.

堆外内存

spark找操作系统要的内存.自己可以管理,其他和堆内内存一样.

spark.memory.offHeap.enabled  默认不开启,由此参数控制堆外内存的开启关闭
spark.memory.offHeap.size 内存大小.

内存空间分配

静态内存管理(老的)

运行程序时,就要设置存储内存和执行内存的比例,不能更改,太辣鸡,弃之.

统一内存管理(新的)

可以动态调整存储内存执行内存的比率.

但是,执行内存是大哥,当自己的被别人占据后,如果想要,可以驱逐别人.

存储内存是小弟,当自己的地盘被执行内存占领后,要不回来.

存储内存管理

RDD持久化机制

如果一个 RDD 上要执行多次行动,可以在第一次行动中使用 persist 或 cache 方法,在内存或磁盘中持久化或缓存这个 RDD,从而在后面的行动时提升计算速度。

对于存储内存来说,Spark 用一个 LinkedHashMap 来集中管理所有的 Block,Block 由需要缓存的 RDD 的 Partition 转化而成

执行内存管理

执行内存主要用来存储任务在执行 Shuffle 时占用的内存

Shuffle 的 Write 和 Read 两阶段对执行内存的使用

看不懂.

作者:十一喵先森

链接:https://juejin.im/post/5e1c41c6f265da3e152d1e62

来源:掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最新文章

  1. ClearContainer 网络部分源码分析
  2. MVC学习笔记-01
  3. Ninject之旅之五:Ninject XML配置
  4. EntityFramework动态多条件查询与Lambda表达式树
  5. java的客户端可以连接CPlus的服务端
  6. 怎样实现Web控件文本框Reset的功能
  7. hdu5438(2015长春赛区网络赛1002)拓扑序+DFS
  8. 解决IIS网站.woff 404 (Not Found)问题
  9. String to Integer (atoi) - 字符串转为整形,atoi 函数(Java )
  10. github部分有意思的库记录
  11. C#之Socket通信
  12. MyBatis探究-----为实体类Bean取别名,配置typeAliases
  13. echarts图Y周坐标轴文字过长的解决方案
  14. Linux 系统开启最大线程数 调优
  15. Java如何编写Servlet程序
  16. 关于我在17号“一个查询任意年份中任意月份的天数”程序编写中的代码&第二种方法!
  17. 快速排查SQL服务器阻塞语句
  18. chrom 自带截屏用法
  19. msys2 设置home路径为windows用户路径
  20. php设计模式-工厂设计模式

热门文章

  1. 公式编辑器MathType之入门攻略
  2. 吉他自学用Guitar Pro好不好?
  3. mac用户怎么保护自己的隐私安全?
  4. MySQL优化篇(未完待续)
  5. MAC端口被占用的解决方法
  6. IDEA创建web工程,不用Archetype(超简单)
  7. Kubernetes-20:日志聚合分析系统—Loki的搭建与使用
  8. LeetCode 045 Jump Game II
  9. SQL优化之SQL 进阶技巧(下)
  10. vue回调接口