天天看點

Spark之CacheManager運作流程Spark之CacheManager運作流程

Spark之CacheManager運作流程

CacheManager概述

Spark之CacheManager運作流程Spark之CacheManager運作流程

CacheManager的功能是将RDD的資料進行持久化。當Task要針對一個RDD中的Partition進行計算時如果發現我們即将産生的RDD已經被CacheManager持久化了,那麼我們可以直接拿到目标資料而無需再進行計算。

具體來說,我們的計算過程發生在RDD的iterator()方法中。當我們要拿的資料是已經持久化過的那麼Spark的底層就會用BlockManager的讀取方法去拿資料。但是有可能出現雖然持久化過資料但是任然沒有拿到資料的話那麼就會嘗試向checkpoint中讀取資料。如果在checkpoint中還是沒有讀到資料,那麼就回去重新計算資料。

最後隻要最後讀到資料而由于這些資料被标記為持久化過的那麼這些資料又會執行一次持久化的操作。底層又使用了BlockManager,在持久化級别為磁盤的級别下直接使用NIO将資料寫入磁盤,在持久化級别為記憶體的話會優先儲存到記憶體中調用MemoryStore的unrollSafely()方法。嘗試将資料寫入記憶體中,這個寫入政策用到了BlockManager中的ensureSpace()方法。

繼續閱讀