Spark存储结构分为两层:
1)内存存储MemoryStore : 负责数据块在内存中存储
2)磁盘存储DiskStore: 实现数据块到磁盘的存取
其中MemoryStore 主要用作缓存以及任务计算时期数据存储,DiskStore用在内存存储不足时使用。Executor和Driver都是通过BlockManager来管理存储,以及Executor和Driver的通信(主要是数据传输和数据块信息的汇报),存储体系结构如下图所示:
MemoryStore使用MemoryManager来管理内存,MemoryAllocator来分配内存。由于内存资源有限,因此需要合理分配内存资源,避免浪费或者内存异常。