前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3.3 Spark存储与I/O

3.3 Spark存储与I/O

作者头像
Albert陈凯
发布2018-04-04 15:44:02
8340
发布2018-04-04 15:44:02
举报
文章被收录于专栏:Albert陈凯Albert陈凯Albert陈凯

3.3 Spark存储与I/O

前面已经讲过,RDD是按照partition分区划分的,所以RDD可以看作由一些分布在不同节点上的分区组成。由于partition分区与数据块是一一对应的,所以RDD中保存了partitionID与物理数据块之间的映射。物理数据块并非都保存在磁盘上,也有可能保存在内存中。

3.3.1 Spark存储系统概览

Spark I/O机制可以分为两个层次:

1)通信层:用于Master与Slave之间传递控制指令、状态等信息,通信层在架构上也采用Master-Slave结构。

2)存储层:同于保存数据块到内存、磁盘,或远端复制数据块。

下面介绍几个Spark存储方面的功能模块。

1)BlockManager:Spark提供操作Storage的统一接口类。

2)BlockManagerMasterActor:Master创建,Slave利用该模块向Master传递信息。

3)BlockManagerSlaveActor:Slave创建,Master利用该模块向Slave节点传递控制命令,控制Slave节点对block的读写。

4)BlockManagerMaster:管理Actor通信。

5)DiskStore:支持以文件方式读写的方式操作block。

6)MemoryStore:支持内存中的block读写。

7)BlockManagerWorker:对远端异步传输进行管理。

8)ConnectionManager:支持本地节点与远端节点数据block的传输。

图3-8概要性地揭示了Spark存储系统各个主要模块之间的通信。

[插图]

图3-8 spark存储系统概览

3.3.2 BlockManager中的通信

存储系统的通信仍然类似Master-Slave架构,节点之间传递命令与状态。总体而言,Master向Slave传递命令,Slave向Master传递信息和状态。这些Master与Slave节点之间的信息传递通过Actor对象实现(关于Actor的详细功能会在下一节Spark通信机制中讲述)。但在BlockManager中略有不同,下面分别讲述。

1)Master节点上的BlockManagerMaster包含内容如下:

①BlockManagerMasterActor的Actor引用。

②BlockManagerSlaveActor的Ref引用。

2)Slave节点上的BlockManagerMaster包含内容如下:

①BlockManagerMasterActor的Ref引用。

②BlockManagerSlaveActor的Actor引用。

其中,在Ref与Actor之间的通信由BlockManagerMasterActor和BlockManagerSlave-Actor完成。这个部分相关的源码篇幅较多,此处省略,感兴趣的读者请自行研究。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.06.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档