zoukankan      html  css  js  c++  java
  • Spark内核-内存管理

    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
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    分布式版本控制系统Git的安装与使用
    利用GitLab自动同步软件仓库
    MakerDAO 代币解释:DAI, WETH, PETH, SIN, MKR(一)
    数组 Major^
    String 类 Major^
    深度优先排序(数字全排列) Major^
    喊数字小游戏 Major^
    java数据类型 Major^
    ArrayList类的使用方法 Major^
    深度优先搜索(迷宫救人最短路径) Major^
  • 原文地址:https://www.cnblogs.com/weijiqian/p/14004226.html
Copyright © 2011-2022 走看看