来源:http://spark.apache.org/docs/2.0.0/configuration.html

spark中的内存使用主要分为两类:执行和存储。执行内存指的是用于shuffles、join、sorts 和aggregations中的计算的内存,而存储内存指的是用于在集群中cache和广播变量数据的内存。

在Spark中,执行和存储共享一个统一的区域(M)。当不使用执行内存时,存储可以获取所有可用内存,反之亦然。执行可以在必要时清理存储内存,但只能在总存储内存使用量低于某个阈值(R)之前执行。换句话说,R描述了M中的一个子区域,其中缓存的块永远不会被移出。由于实现的复杂性,存储可能无法收回执行。

这种设计确保了几种理想的特性。首先,不使用缓存的应用程序可以使用整个空间来执行,从而避免不必要的磁盘溢写。第二,确实使用缓存的应用程序可以保留一个最小的存储空间(R),使其数据块不会被逐出。最后,这种方法为各种工作负载提供了合理的开箱即用的性能,而不需要用户了解内存如何在内部划分。

 
名称 默认值

说明

spark.memory.fraction 0.6

实际大小:(heap space - 300MB)* 0.6,用于存储和执行。(剩下的0.4用于Task计算)

这个值越小,发生溢写和缓存清理的频率就越高。

此配置的目的是为内部元数据、用户数据结构和不精确的大小估计预留内存,以防出现稀疏、异常大的记录。

建议保留默认配置。

spark.memory.storageFraction 0.5

不受缓存清理影响存储内存。

是spark.memory.fraction的一部分。

这个值越大,工作内存就越小,越容易发生溢写磁盘。

建议保留默认配置

spark.memory.offHeap.enabled false

设为true,将使用堆外内存,同时spark.memory.offHeap.size必须要设置值

spark.memory.offHeap.size 0

可用于堆外分配的绝对内存量。

此设置对堆内存使用没有影响,因此,如果executor的总内存消耗必须在某个固定的限制内,那么一定要相应地减少JVM堆大小。

spark.memory.useLegacyMode false

​是否启用Spark 1.5及之前使用的内存管理模式。

静态内存管理模式将堆空间严格划分为固定大小的区域,如果不调整应用程序,可能会导致溢出。

spark.shuffle.memoryFraction 0.2

spark.memory.useLegacyMode为true时才生效。用于shuffle的聚合。

spark.storage.memoryFraction 0.6

spark.memory.useLegacyMode为true时才生效。用于内存缓存。不应大于JVM中“老年代”对象。

spark.storage.unrollFraction 0.2

spark.memory.useLegacyMode为true时才生效。用于在内存中展开块。

Spark2.0.0内存管理的更多相关文章

  1. Kernel 3.0.8 内存管理函数【转】

    转自:http://blog.csdn.net/myarrow/article/details/7208777 1. 内存分配函数 相关代码如下: #define alloc_pages(gfp_ma ...

  2. 结合源码看nginx-1.4.0之nginx内存管理详解

    目录 0. 摘要 1. nginx内存结构设计 2. nginx内存数据结构 3. nginx内存管理原理 4. 一个简单的内存模型 5. 小结 6. 参考资料 0. 摘要 内存管理,是指软件运行时对 ...

  3. Linux 0.11源码阅读笔记-内存管理

    内存管理 Linux内核使用段页式内存管理方式. 内存池 物理页:物理空闲内存被划分为固定大小(4k)的页 内存池:所有空闲物理页组成内存池,以页为单位进行分配回收.并通过位图记录了每个物理页是否空闲 ...

  4. iOS MRC ARC 内存管理

    转自:http://www.jianshu.com/p/48665652e4e4 1. 什么是内存管理 程序在运行的过程中通常通过以下行为,来增加程序的的内存占用 创建一个OC对象 定义一个变量 调用 ...

  5. 7内存管理-MRC

    @0简介 内存管理,即内存里各个对象的管理,即内存里各个对象的生命周期的管理,(从面向对象的角度看) @1引用计数器 默认为1,即有一滴的生命血液,若为0就会死去 @2单个对象的管理 自己管理自己,自 ...

  6. lua内存管理

    本文内容基于版本:Lua 5.3.0 Lua内存管理器规则 Lua允许用户自定义内存管理器,并在创建Lua虚拟机(lua_State实例)时传入.当然自定义内存管理器必须遵循Lua已定义的一些行为规则 ...

  7. effective OC2.0 52阅读笔记(五 内存管理)

    第五章:内存管理 29 理解引用计数 30 以ARC简化引用计数 总结:ARC通过命名约定将内存管理规则标准化.其他编程语言很少像OC这样强调命名.ARC通过设置全局数据结构(此数据结构的具体内容因处 ...

  8. 【0 - 1】OC内存管理

    一.内存管理概述 垃圾回收机制(GC):由系统管理内存,程序员不需要管理. OC中的垃圾回收:在OC2.0版加入垃圾回收. OC与iOS:OC有垃圾回收机制,但是iOS屏蔽了这个功能.原因:iOS运行 ...

  9. OC基础:内存(内存管理) 分类: ios学习 OC 2015-06-25 16:50 73人阅读 评论(0) 收藏

    自动释放池: @autoreleasepool { } 内存管理机制       谁污染,谁治理 垃圾回收机制:gc(Garbage collection),由系统管理内存,开发人员不需要管理. OC ...

随机推荐

  1. [PL]如果天空是黑暗的,那就摸黑生存

    “如果天空是黑暗的,那就摸黑生存:如果发出声音是危险的,那就保持沉默:如果自觉无力发光的,那就蜷缩于墙角.但不要习惯了黑暗,就为黑暗辩护:不要为自己的苟且而得意:不要嘲讽那些比自己更勇敢更热情的人们. ...

  2. Codeforces 1095F Make It Connected(最小生成树)

    题目链接:Make It Connected 题意:给定一张$n$个顶点(每个顶点有权值$a_i$)的无向图,和已连接的拥有边权$w_i$的$m$条边,顶点u和顶点v直接如果新建边,边权为$a_u+a ...

  3. How to expand Azure VM OS Disk

    There are three main disk roles in Azure: the data disk, the OS disk, and the temporary disk. 1. OS ...

  4. 第五周java学习总结

    学号 20175206<Java程序设计>第五周学习总结 教材学习内容总结 6.1 接口 为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口. 使用关键字interf ...

  5. Markdown——入门指南

    导语: Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简单.常用的标记 ...

  6. Kubernetes之dashboard

    部署dashboard $ wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommen ...

  7. 开放源代码的设计层面框架Spring——day02

    spring第二天     一.基于注解的IOC配置         1.1写在最前             学习基于注解的IOC配置,大家脑海里首先得有一个认知,即注解配置和xml配置要实现的功能是 ...

  8. 虚拟云主机创建多个站点方法(.htaccess实现)

    阿里的普通版虚拟云主机最多只能建一个站点,但可以绑定多个域名.如果我们想创建2个或3个主机怎么办呢?难道需要再另外购买一台主机? 其实我们可以通过.htaccess文件来定义相关域名绑定对应的网站目录 ...

  9. python学习05

    数据类型之字典dict.set集合 1).字典dict 1. dict_1={'name':'tom','age':18} 是以键值对(key-value)的方式,其中键是可hash值的,即表示键是唯 ...

  10. 统一配置管理 windows linux ide maven gradle docker 【渐进式备份更新~~】

    Tips 系统盘放轻量配置(%HOMEPATH%),仓库盘放大容量文件(自己维护一份 语义化目录结构.txt). Tips               系统盘放 不经常写操作的文件(除轻量配置)    ...