因为GFS需要将数据存储到多个Chunk 服务器上,这就涉及多个 Chunk 服务器写数据的问题。Master 服务器需要在多个Chunk 服务器中选出一个主 Chunk 服务器,由主 Chunk 服务器通知其他 Chunk 服务器写入数据。
如下图所示,GFS写入数据的流程是:
(1)客户端向 Master 服务器发起写入数据请求。
(2)Master 服务器选定要写入的 Chunk 服务器,由于默认每份数据保存到 3 个不同的Chunk服务器上,因此要选定3个不同的Chunk服务器。
Master服务器创建虚拟Chunk文件,映射存储文件与 Chunk 的映射关系、Chunk 文件与 Chunk 服务器的映射关系,同时要选定主 Chunk 服务器。Master 服务器完成这一系列流程后,向客户端返回 Chunk 服务器的信息,这些信息都是包含在元数据中的。
(3)客户端向主 Chunk 服务器发送要写入的文件,主 Chunk 服务器缓存要写入的文件。
(4)客户端向备 Chunk 服务器发送要写入的文件,备 Chunk 服务器缓存要写入的文件。
(5)客户端向主 Chunk 服务器发送控制写流程。
(6)主 Chunk 服务器收到客户端发送的控制写流程后,开始向自身服务器写入相应的数据,同时会通知备 Chunk 服务器写入数据。
(7)备 Chunk 服务器执行完写数据操作后,会向主 Chunk 服务器返回写入结果。主Chunk 服务器最少一个副本写入成功,则视为数据写入成功,否则视为数据写入失败。
(8)主 Chunk 服务器向客户端返回最终的数据写入结果。
以上内容摘自《海量数据处理与大数据技术实战》电子书,点击https://developer.aliyun.com/topic/download?id=8205可下载完整版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。