Spark中的數據存儲主要由BlockManager、ShuffleManager、DiskStore、MemoryStore等組件組成,固然還涉及到具體的主從節點之間的元數據信息交換。數組
BlockManager在存儲數據的時候主要經過putBytes、putIterator等方法實現,前者是寫入字節數組,後者是寫入迭代器內容(此時循環迭代器依次寫入)。寫入的時候根據StorageLevel先決定是否寫入MemoryStore,若是不成功再決定是否寫入DiskStore。讀取過程相反。ast
DiskBlockManager處理邏輯Block和物理File之間的關係,從BlockId到物理File的映射關係等。循環
BlockManager經過Slave和Master的節點概念,在Master統一維護彙總Block元數據。迭代器
BlockManager也同時管理Shuffle數據的存儲和Broadcast數據的存儲。方法
Spark的存儲管理主要是這三章內容組成,Shuffle、BlockManager等概念。數據