美文网首页
[第十七章]CacheManage原理剖析

[第十七章]CacheManage原理剖析

作者: hoose | 来源:发表于2016-02-28 21:16 被阅读206次

    我们知道一个task在执行一个RDD时,会调用rdd的iterator()方法,计算当前的partition.

    但是,如果之前从来没有对这个RDD进行持久化,那么实际上是从RDD的父RDD来执行我们的算子来计算新的RDD的partition数据。

    如果这个RDD以前持久化过,那么就是说它的StoreLevel肯定不是NONE,那么此时CacheManager就会帮忙我们直接去找到持久化的数据

    虽然我们持久化过,但如果因为一些原因,数据却拿不到了,BlockManager首先从本地读取数据,如果本地没有,则尝试从远程获getRemote()方法

    如果远程也无法获取数据,会尝试读取之前checkpoint过的数据,如果连checkpoint的数据都没有读取到,那么就只能重新计算一份,并把计算完的数据进行持久化

    对数据持久化,当持久级别是硬盘时,就直接用BlockManager.doPut()方法持久化

    对数据持久级别是内存时,先保存数据到内存,如果内存不够时,会调用自己的算法,把内存中的一部分数据持久化磁盘,整理出来一部分空间,然后在将数据写入内存。

    相关文章

      网友评论

          本文标题:[第十七章]CacheManage原理剖析

          本文链接:https://www.haomeiwen.com/subject/chcgkttx.html