源码解密Spark内存管理
![]() 远古大神曾告诉我们这个神秘公式:程序=算法+数据。 1.1 什么是内存模型 内存模型就是告诉我们怎么划分内存、怎么合理利用我们的内存。 首先我们要存什么,根据大神的公式,我们这样来分析:
这下我们就可以把我们需要储存的东西分为数据区和执行区。 二、spark内存模型 2.1 spark为啥快 我们都知道spark之所以比mapreduce计算的快,是因为他是基于内存的,不用每次计算完都写磁盘,再读取出来进行下一次计算,spark直接把内存作为数据的临时储存介质。所以mapreduce就没有强调内存管理,而spark需要管理内存。 2.2 spark管理的内存 系统区:spark运行自身的代码需要一定的空间。 用户区:我们自己写的一些udf之类的代码也需要一定的空间来运行。 存储区:spark的任务就是操作数据,spark为了快可能把数据存内存,而这些数据也需要占用空间。 执行区:spark操作数据的单元是partition,spark在执行一些shuffle、join、sort、aggregation之类的操作,需要把partition加载到内存进行运算,这也会运用到部分内存。 2.3 spark内存模型 (编辑:南通站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |