Spark内存管理模型(二)—— 统一内存管理(Unified Memory Manager)

Spark内存模型在1.6版本之前版本采用的是静态管理(Static Memory Manager)的方式,在1.6之后采用的是统一管理(Unified Memory Manager)的方式。且Spark的可用内存分为堆内和堆外,由于堆外的比较简单,所以本文会对统一管理方式的情况进行讲解。

Spark 1.6 之后引入了统一内存管理机制,该机制与静态内存管理的区别在于,存储内存(Storage)和执行内存(Execution)是共享一块内存空间的,双方可以互相占用对方的空闲区域。

一、堆内

统一内存管理(堆内)图示如下(各个模块的作用这里就不说啦,上篇文章有写):
这里写图片描述

统一内存管理机制是为了针对静态内存管理机制中“一半海水,一半火焰”而做的优化,那么下面来讲讲存储内存和执行内存互相占用 的规则:

  • 若双方空间都不足时,则都flush到磁盘中
  • 若自己空间不足,但是对方有空闲空间,那么可以借用对方的空间
  • 若Execution内存被Storage占用后,可以叫Storage将数据flush到磁盘,然后归还空间
  • 若Storage空间被Execution空间占用后,无法让该空间归还给Storage,因为这个涉及到shuffle的很多因素,很复杂

二、堆外

由于堆外的内存空间也是分为存储内存(Storage)和执行内存(Execution),互相占用的规则和堆内的是一致的
统一内存管理(堆外)图示如下:
这里写图片描述

注:本文的内容和图片摘取于:https://www.ibm.com/developerworks/cn/analytics/library/ba-cn-apache-spark-memory-management/index.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值