【摘要】:在Spark中存储模块被抽象成Storage,顾名思义,Storage是存储的意思,代表着Spark中的数据存储系统,负责管理和实现数据块的存放。Storage抽象模块的实现分为两个层次,如图6-1所示。图6-1 Storage存储模块1)通信层:通信层是典型的Master-Slave结构,Master和Slave之间传输控制和状态信息。其他模块若要和Storage模块进行交互,需要通过调用统一的操作类BlockManager来完成。黑盒中用到了不少的设计模式,下一小节将谈谈Storage抽象实现中涉及的设计模式。
在Spark中存储模块被抽象成Storage,顾名思义,Storage是存储的意思,代表着Spark中的数据存储系统,负责管理和实现数据块(Block)的存放。其中存取数据的最小单元是Block,数据由不同的Block组成,所有操作都是以Block为单位进行的。本质上讲RDD中的Partition和Storage中的Block是等价的,只是所处的模块不同看待的角度不一样而已。
Storage抽象模块的实现分为两个层次,如图6-1所示。
图6-1 Storage存储模块(www.xing528.com)
1)通信层:通信层是典型的Master-Slave结构,Master和Slave之间传输控制和状态信息。通信层主要由BlockManager、BlockManagerMaster、BlockManagerMasterEndpoint、BlockManagerSlaveEndpoint等类实现。
2)存储层:负者把数据存储到内存、磁盘或者堆外内存中,有时还需要为数据在远程结点上生成副本,这些都由存储层提供的接口实现。具体的存储层的实现类有抽象类Block-Store,实现类DiskStore、MemoryStore、ExternalBlockStore等。
其他模块若要和Storage模块进行交互,需要通过调用统一的操作类BlockManager来完成。如果把整个存储模块看成一个黑盒,BlockManager就是黑盒上留出的一个供外部调用的接口。黑盒中用到了不少的设计模式,下一小节将谈谈Storage抽象实现中涉及的设计模式。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。