BlockManager是分佈式塊存儲管理。核心機制是每一個節點存儲本身的內存空間和磁盤空間。BlockManagerMaster負責與其餘節點的BlockManager通訊並負責塊在節點間的複製。BlockInfoManager負責管理塊的元數據並提供讀寫鎖的功能。當從本地的BlockManager獲取不到塊時,從遠程節點Fetch這個塊。數組
Broadcast也是運用了BlockManager來存儲廣播變量,廣播變量不須要經過鎖的機制,參見源碼這裏不單獨指出。分佈式
四大BlockManager組件:spa
名稱內存 |
說明ci |
BlockManagerMaster源碼 |
BlockManager的主節點,全部的Block請求消息都是從這裏發出。table |
BlockManagerMasterEndPointast |
主節點的BlockManager的Endpoint,負責解釋slave發送來的塊消息請求變量 |
BlockManagerSlaveEndPoint請求 |
負責slave節點的塊請求消息處理,處理master發來的Block消息。master保存註冊過來的多個slaveEndpoint。全部的BlockInfo更新都要通知給master。 |
BlockManager |
在每一個節點上運行Blockmanager。 經過BlockManagerMaster來實現塊的複製。 經過BlockInfoManager讀寫塊的元數據;經過MemoryStore和DiskStore實現塊數據的存儲讀寫。 |
BlockInfoManager |
管理BlockInfo數組,加上讀寫鎖的控制。主要爲BlockManager服務。 |