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

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

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

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

堆内存和堆外内存

堆内存

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

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

Executor 堆内存通过 --executor-memoryspark.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.memoryspark.driver.memoryOverhead 之和。

Driver 内存大小等于, spark.driver.memoryspark.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() 可以在存储空间不足时,让缓存数据落盘。

参考


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

查看所有标签

猜你喜欢:

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

神经网络与机器学习(原书第3版)

神经网络与机器学习(原书第3版)

[加] Simon Haykin / 申富饶、徐烨、郑俊、晁静 / 机械工业出版社 / 2011-3 / 79.00元

神经网络是计算智能和机器学习的重要分支,在诸多领域都取得了很大的成功。在众多神经网络著作中,影响最为广泛的是Simon Haykin的《神经网络原理》(第3版更名为《神经网络与机器学习》)。在本书中,作者结合近年来神经网络和机器学习的最新进展,从理论和实际应用出发,全面、系统地介绍了神经网络的基本模型、方法和技术,并将神经网络和机器学习有机地结合在一起。 本书不但注重对数学分析方法和理论的探......一起来看看 《神经网络与机器学习(原书第3版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具