Spark的缓存管理解析

来源:互联网 发布:解数独算法 编辑:程序博客网 时间:2024/05/18 22:40

Spark的缓存管理解析

[睡着的水-hzjs-2016.08.24]

一、CacheManager分析

1、CacheManager管理的缓存,而混存可以是基于内存的缓存,也可以是基于磁盘的缓存;

2、CacheManager需要通过BlockManager来操作数据;

3、当Task 运行的时候会调用RDD的compute方法进行计算,而compute 方法会调用iterator方法:


二、CacheManager源码的详解

1、Cache 在工作的时候会最大化的保留数据,但是数据不一定绝对完整,因为当前的计算如果需要内存空间的话看,那么Cache在内存中的数据必须让出空间,此时如果在RDD持久化的时候同时指定了可以把数据放在Disk 上,那么部分Cache 的数据可以从内存转入磁盘,否则的话数据就会丢失!!!


2、具体CacheManager在获得缓存数据的时候会通过BlockManager 来抓到数据;


3、CacheManager 没有通过BlockManager获得缓存内容的话,此时会通过RDD的如下方法来获得数据:

上述方法首先会查看当前的RDD是否进行了Checkpoint,如果进行了话直接读取checkpoint的数据,否则的话就必须进行计算来计算之后通过putInBlockManager缓存起来














1 0
原创粉丝点击