Spark Memory Management
顾亮亮
2016.01.26


Agenda


为什么Spark需要管理内存?


Static Memory Manager (in 1.5.0 and before)


Static Memory Manager

1. Execution Memory

2. Storage Memory

3. Other Memory


Safety Fraction

为了避免OOM,Spark为每个存储区设置了Safety Fraction

Execution Memory真正的可用内存是

Storage Memory真正的可用内存是


Storgae Memory Unroll Fraction


Static Memory Configuration


Static Memory Manager的问题

  1. 谁都不能超过自己的上限,规定了是多少就是多少,虽然另外一片内存空闲
  2. 增加使用者配置的难度,需要根据应用的特性配置相关的参数

Unified Memory Manager (since 1.6.0)


Unified Memory Manager

Executor向Storage借Memory

Storage向Executor借Memory


Resolved Memory


Unified Memory Configuration


Code


类图


Storage向Executor借内存


Executor向Storage借内存


初始化Memory Manager


使用Memory Manager


MemoryConsumer

子类


Further Questions?


References