Spark之CacheManager运行流程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34993631/article/details/87468748

Spark之CacheManager运行流程

CacheManager概述

CacheManager的功能是将RDD的数据进行持久化。当Task要针对一个RDD中的Partition进行计算时如果发现我们即将产生的RDD已经被CacheManager持久化了,那么我们可以直接拿到目标数据而无需再进行计算。

具体来说,我们的计算过程发生在RDD的iterator()方法中。当我们要拿的数据是已经持久化过的那么Spark的底层就会用BlockManager的读取方法去拿数据。但是有可能出现虽然持久化过数据但是任然没有拿到数据的话那么就会尝试向checkpoint中读取数据。如果在checkpoint中还是没有读到数据,那么就回去重新计算数据。

最后只要最后读到数据而由于这些数据被标记为持久化过的那么这些数据又会执行一次持久化的操作。底层又使用了BlockManager,在持久化级别为磁盘的级别下直接使用NIO将数据写入磁盘,在持久化级别为内存的话会优先保存到内存中调用MemoryStore的unrollSafely()方法。尝试将数据写入内存中,这个写入策略用到了BlockManager中的ensureSpace()方法。

猜你喜欢

转载自blog.csdn.net/qq_34993631/article/details/87468748