BlockManager:spark底層負責數據管理的組件。
每一個節點上都有BlockManager,而Driver有BlockManagerMaster(Driver有DAGScheduler,DAGScheduler有BlockManagerMaster,BlockManagerMaster內有BlockManagerInfo,BlockManagerInfo內有BlockStatus),BlockManagerMaster負責對各個節點上的BlockManagerMaster內部管理的數據進行維護,如Block的增刪改操作,都會在這裏維護元數據的變更。每個BlockManager創建完之後,會向BlockManagerMaster進行註冊,此時BlockManagerMaster會爲其創建對應的BlockManagerInfo。
BlockManagerMaster包含四個主要的組件:DiskStore、MemoryStore、BlockManagerWorker、ConnectionManager
1.DiskStore負責對磁盤中的數據進行讀寫;
2.MemoryStore負責對內存中的數據進行讀寫;
3.ConnectionManager負責建立遠程BlockManager的連接;
4.BlockManagerWorker負責對遠程其它節點的BlockManager進行讀寫。
可將DiskStore、MemoryStore看爲本地的操作,而將ConnectionManager、BlockManagerWorker作爲遠程操作。
從BlockManager讀取數據時,如果本地有數據,就使用DiskStore或MemoryStore從本地的磁盤或內存中讀取所需的數據,如果本地沒數據時,通過ConnectionManager連接其它BlockManager,使用BlockManagerWorker從遠程的BlockManager中進行數據讀取。