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

  • 相关阅读:
    jquery源码分析
    面试笔试整理3:深度学习机器学习面试问题准备(必会)
    深度学习岗位面试问题整理笔记
    常见面试之机器学习算法思想简单梳理
    TensorFlow与OpenCV,读取图片,进行简单操作并显示
    payload
    IPMB接口协议总结
    uboot 网络驱动模型
    对于phy芯片的认识
    网口扫盲三:以太网芯片MAC和PHY的关系
  • 原文地址:https://www.cnblogs.com/weijiqian/p/14004226.html
Copyright © 2011-2022 走看看