Spark 调优(一):Spark 内存管理

栏目: 编程工具 · 发布时间: 7年前

内容简介:Spark 由 Scala/Java 编写的,Spark 的 Driver 和 Executor 是运行在集群中的 JVM 进程,内存管理基于 JVM。在 JVM 堆上分配的内存,在 GC 范围内。Driver 堆内存通过

Spark 由 Scala/Java 编写的,Spark 的 Driver 和 Executor 是运行在集群中的 JVM 进程,内存管理基于 JVM。

堆内存和堆外内存

堆内存

在 JVM 堆上分配的内存,在 GC 范围内。

Driver 堆内存通过 --driver-memory 或 spark.driver.memory 指定,默认 1GB 大小。

Executor 堆内存通过 --executor-memory 或 spark.executor.memory 指定,默认 1GB 大小。

堆外内存

在 JVM 之外分配的内存,不在 GC 范围内。

Driver 堆外内存通过 spark.driver.memoryOverhead 指定,默认为 Driver 堆内存的 0.1 倍,最小 384 MB。

Executor 堆外内存通过 spark.executor.memoryOverhead 指定,默认为 Executor 堆内存的 0.1 倍,最小 384 MB。

Driver 内存大小等于, spark.driver.memory 与 spark.driver.memoryOverhead 之和。

Driver 内存大小等于, spark.driver.memory 与 spark.driver.memoryOverhead 之和。

统一内存管理

在 Spark 1.6 版本之后,作为 Tungsten 计划中的一部分,提供了统一内存管理(Unified Memory Manager)替换之前的静态内存管理(Static Memory Manager)管理内存。

Spark 调优(一):Spark 内存管理

保留内存

保留内存(Reserved Memory)为系统保留内存,大小硬编码为 300MB。

用户内存

用户内存(User Memory)用于存储 RDD 转换(例如,mapPartition 等)用户自定义数据结构,大小为:

(Java Heap - Reserved Memory) * (1.0 - spark.memory.fraction)

配置 spark.memory.fraction 默认值为 0.6。

Spark 内存

Spark 内存分为两部分:

  • 存储内存(Storage Memory)用于存储缓存数据、广播变量和序列化数据“展开(Unroll)”临时数据。
  • 执行内存(Execution Memory)用于任务执行对象存储。

默认,存储内存的大小为:

(Java Heap - Reserved Memory) * spark.memory.fraction * spark.memory.storageFraction

配置 spark.memory.fraction 默认值为 0.6。

配置 spark.memory.storageFraction 默认值为 0.5。

存储内存和执行内存之间并不是一个严格的边界,统一内存管理器提供了动态占用机制,规则如下:

  • 若对方有空余空间,可占用对方空余空间;
  • 执行内存可以驱逐存储内存占用的原本属于执行内存的空间;
  • 存储内存不可以驱逐执行内存占用的原本属于存储内存的空间。

执行内存,就是这么霸道!!!

Tips

缓存密集型应用,可以适当提高 spark.memory.storageFraction ,增加存储内存的占比。

Shuffle 密集型应用,可以适当降低 spark.memory.storageFraction ,增加执行内存的占比。

使用 Dataset.persist(StorageLevel.MEMORY_AND_DISK) 替代 Dataset.cache() 可以在存储空间不足时,让缓存数据落盘。

参考


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

赢在设计

赢在设计

[美] 洛芙迪 (Lance Loveday)、[美] 尼豪斯 (Sandra Niehaus) / 刘淼、枊靖、王卓昊 / 人民邮电出版社 / 2010-8 / 55.00

企业总是面临在网站设计和改进方面进行投资的抉择。怎样才能让有限的资金发挥出最大的效益呢?网站设计不应只是把网站做得赏心悦目,它更应该是提高经济收益和获得竞争优势的战略利器。是时候让网站发挥其潜能,以业务指标为导向来做设计决策,为提升网站收益而设计了。 作者凭借多年为众多网站做咨询工作的经验,为我们揭示了赢在设计的奥秘。它针对目前网站设计中存在的典型问题,先从宏观上探讨解决问题的战略手段,围绕......一起来看看 《赢在设计》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码