Spark存儲結構分為兩層:
1)內存存儲MemoryStore : 負責數據塊在內存中存儲
2)磁盤存儲DiskStore: 實現數據塊到磁盤的存取
其中MemoryStore 主要用作緩存以及任務計算時期數據存儲,DiskStore用在內存存儲不足時使用。Executor和Driver都是通過BlockManager來管理存儲,以及Executor和Driver的通信(主要是數據傳輸和數據塊信息的匯報),存儲體系結構如下圖所示:
5-spark內存管理.png
MemoryStore使用MemoryManager來管理內存,MemoryAllocator來分配內存。由于內存資源有限,因此需要合理分配內存資源,避免浪費或者內存異常。