spark——BlockManager筆記整理和學習

spark的cacheManager

在這裏插入圖片描述
這張圖能知道什麼?
Q: spark對RDD的緩存是通過誰去做的?
A: 通過BlockManager去緩存, 並且根據配置選項,決定緩存在文件還是內存中。


driver、executor和BlockManager的關係

在這裏插入圖片描述
從中可以看到

  1. blockManagerMaster在driver端生成
  2. executor中生成blockManager,並負責向BMM註冊。
  3. spark中註冊消息通過ActorSystem進行發送

blockManager包含什麼

在這裏插入圖片描述

  • BlockManager的作用?我理解是負責做RDD的存儲,如何存下來給後續任務去使用。
  • memoryStore和DiskStore,說明把block做存儲時,有內存和磁盤2種方式,存儲後就都i通過這個Store去管理。
  • 存儲時以Block爲單位,所以會有個映射用的數組
  • 有一個負責和Driver的BlockManagerMaster通信的引用接口
  • 還有個shuffClient,負責做 備份下載

把塊block 存入blockManager的流程

在這裏插入圖片描述
需要注意的一個地方: 當內存不足以放入Block時, 他會先釋放一下,再判斷是否滿足!

從blockManager中刪除塊

在這裏插入圖片描述
紅色方框寫錯了, 應該是如果只支持磁盤存儲,則從DiskStore中調用方法取出block。

shuffClient 下載block操作

在這裏插入圖片描述
BMMAC就是BlockManagerMasterActor,我當初瞎寫的簡稱

  • 注意點:當要取的塊來自好幾個BlockManager時, 把它打亂順序,避免好幾個BM同時從某一個BM上下載數據!

shuffeClinet的備份操作

在這裏插入圖片描述

  • BM爲什麼要備份他的block?這個書裏沒提!真坑。我的理解是爲了防止節點崩潰或者丟失,導致中間任務無法繼續執行?
  • 因爲其他的BlockManager能接收的block可能有限,所以備份時可能會涉及多個block, 每次我們一樣,從BMmaster那裏拿一個 ***隨機***的blockManager做備份,避免都往同一個上備份。

完整筆記圖

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章