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

    Spark 内存管理

    • Spark 执行应用程序时, 会启动 Driver 和 Executor 两种 JVM 进程

      • Driver 负责创建 SparkContext 上下文, 提交任务, task的分发等。
      • Executor 负责 task 的计算任务, 并将结果返回给 Driver, 同时需要为需要持久化的 RDD 提供储存。
      • Driver 端的内存管理比较简单, 这里说的 Spark内存管理针对 Executor 端的内存管理。
      • Spark 内存管理分为 静态内存管理 和 统一内存管理, Spark1.6 之前使用的是静态内存管理, Spark1.6 之后引入了统一内存管理。
      • 静态内存管理中存储内存、执行内存和其他内存的大小在 Spark 应用程序运行期间均为固定的, 但用户可以在应用程序启动前进行配置。
      • 统一内存管理与静态内存管理的区别在于存储内存和执行内存共享同一块空间, 可以互相借用对方的空间。
      • Spark1.6 及 1.6 之后的版本默认使用的是统一内存管理。
      • 要想使用静态内存可以通过将参数 spark.memory.useLeagacyMode 设置为 true(默认为 false) 使用静态内存管理。
    • 静态内存管理分布图

      image-20191026135001799

    • 统一内存管理分布图

      image-20191026135013516

    • reduce 中 OOM(Out Of Memory) 如何处理?

      • 减少每次拉取的数据量
      • 提高 shuffle 聚合的内存比例
      • 提高 Executor 的总内存
  • 相关阅读:
    L1范数和L2范数
    Python---scikit-learn(sklearn)模块
    Python------SciPy模块
    Python---Pandas模块
    Python---NumPy模块---矩阵操作
    Python---NumPy模块
    sift代码实现详解
    opencv 图像
    OpenCV-Mat结构详解
    OpenCV3+VS2015 经常出现debug error abort()has been called问题
  • 原文地址:https://www.cnblogs.com/ronnieyuan/p/11742974.html
Copyright © 2011-2022 走看看