转自:https://github.com/jacksu/utils4s/blob/master/spark-knowledge/md/spark%E5%86%85%E5%AD%98%E6%A6%82%E8%BF%B0.md

1.5以前

spark进程是以JVM进程运行的,可以通过-Xmx和-Xms配置堆栈大小,它是如何使用堆栈呢?下面是spark内存分配图。

storage memory

spark默认JVM堆为512MB,为了避免OOM错误,只使用90%。通过spark.storage.safetyFraction来设置。spark通过内存来存储需要处理的数据,使用安全空间的60%,通过 spark.storage.memoryFraction来控制。如果我们想知道spark缓存数据可以使用多少空间?假设执行任务需要executors数为N,那么可使用空间为N*90%*60%*512MB,但实际缓存数据的空间还要减去unroll memory。

shuffle memory

shuffle memory的内存为“Heap Size” * spark.shuffle.safetyFraction * spark.shuffle.memoryFraction。默认spark.shuffle.safetyFraction 是 0.8 ,spark.shuffle.memoryFraction是0.2 ,因此shuffle memory为 0.8*0.2*512MB = 0.16*512MB,shuffle memory为shuffle用作数据的排序等。

unroll memory

unroll memory的内存为spark.storage.unrollFraction * spark.storage.memoryFraction * spark.storage.safetyFraction,即0.2 * 0.6 * 0.9 * 512MB = 0.108 * 512MB。unroll memory用作数据序列化和反序列化。

1.6开始

提出了一个新的内存管理模型: Unified Memory Management。打破ExecutionMemory 和 StorageMemory 这种分明的界限。如果现在没有execution的需要,那么所有的内存都可以给storage用,反过来也是一样的。同时execution可以evict storage的部分内存,但是反过来不行。在新的内存管理框架上使用两个参数来控制spark.memory.fraction和spark.memory.storageFraction。

参考文献

spark 框架

Spark 1.6 内存管理模型( Unified Memory Management)分析

spark内存概述的更多相关文章

  1. 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器

    第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...

  2. 大数据技术之_19_Spark学习_04_Spark Streaming 应用解析 + Spark Streaming 概述、运行、解析 + DStream 的输入、转换、输出 + 优化

    第1章 Spark Streaming 概述1.1 什么是 Spark Streaming1.2 为什么要学习 Spark Streaming1.3 Spark 与 Storm 的对比第2章 运行 S ...

  3. Spark学习之路 (十一)SparkCore的调优之Spark内存模型

    摘抄自:https://www.ibm.com/developerworks/cn/analytics/library/ba-cn-apache-spark-memory-management/ind ...

  4. Spark(七)Spark内存调优

    一.概述 Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色.理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优.本文 ...

  5. 大数据技术之_19_Spark学习_05_Spark GraphX 应用解析 + Spark GraphX 概述、解析 + 计算模式 + Pregel API + 图算法参考代码 + PageRank 实例

    第1章 Spark GraphX 概述1.1 什么是 Spark GraphX1.2 弹性分布式属性图1.3 运行图计算程序第2章 Spark GraphX 解析2.1 存储模式2.1.1 图存储模式 ...

  6. spark内存管理器--MemoryManager源码解析

    MemoryManager内存管理器 内存管理器可以说是spark内核中最重要的基础模块之一,shuffle时的排序,rdd缓存,展开内存,广播变量,Task运行结果的存储等等,凡是需要使用内存的地方 ...

  7. Spark学习之路 (十一)SparkCore的调优之Spark内存模型[转]

    概述 Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色.理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优.本文旨在 ...

  8. 第1章 Spark SQL概述

    第1章 Spark SQL概述 1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作 ...

  9. Spark内存管理机制

    Spark内存管理机制 Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色.理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行 ...

随机推荐

  1. Jacoco覆盖率工具使用

    Jacoco介绍 Jacoco是一个开源的覆盖率工具.Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序.很多第 ...

  2. Linux内核结构体--kfifo 环状缓冲区

    转载链接:http://blog.csdn.net/yusiguyuan/article/details/41985907 1.前言 最近项目中用到一个环形缓冲区(ring buffer),代码是由L ...

  3. sql遍历全部数据集

    DECLARE @a int set @a = 1 while @a < 5 BEGIN select top(1) * from QPShuGameMatchDB..MatchScoreSta ...

  4. SpringBoot启动

    一.启动时加载数据,就用CommandLineRunner 只需要将类实现CommandLineRunner,并且加上Component注解,还可以通过Order来控制启动顺序. @Component ...

  5. 【LeetCode】41. First Missing Positive (3 solutions)

    First Missing Positive Given an unsorted integer array, find the first missing positive integer. For ...

  6. PO_职位职务审批模式详解(设定)

    2014-06-03 Created By BaoXinjian

  7. LevelDB场景分析1--整体结构分析

    基本用法 数据结构 class DBImpl : public DB { private:     struct CompactionState;     struct Writer;// Infor ...

  8. Python pow() 函数

    描述 pow() 方法返回 xy(x的y次方) 的值. 语法 以下是 math 模块 pow() 方法的语法: import math math.pow( x, y ) 内置的 pow() 方法 po ...

  9. Python log() 函数

    描述 log() 方法返回x的自然对数,x > 0. 语法 以下是 log() 方法的语法: import math math.log( x ) 注意:log()是不能直接访问的,需要导入 ma ...

  10. git配置gitignore

    一.背景                                                                                                 ...