The Google File System 总结

The Google File System

架构

一些名词

  • chunk:在GFS中,文件被分割成大小固定的块进行储存,chunk就是指这样的块,一般大小为64MB,每一个chunk都被一个独特的64位的chunk handle标识。
  • replica:为了保证储存可靠性,每个chunk都会被复制一定的数量,分散储存。这些包含相同数据的块也称为replica。系统默认储存3个replica。
  • master:不储存chunk,而是保存文件系统的元数据,单个。
  • chunkserver:保存chunk,多个组成集群。

master中保存了namespace,访问控制信息,文件和chunk的对应表,每个chunk在系统中当前的位置。master还负责管理chunk租约,回收系统中孤立的chunk所占的空间,将chunk在chunkserver中进行迁移。master定期的与所有chunkserver通信,来获取他们的状态,给予他们指令。

GFS架构图

客户端从GFS中读取文件过程

  1. 根据已知的chunk的大小和文件的大小,客户端计算出需要的chunk属于文件的第几个chunk。然后将文件名,chunk的序号发送给master
  2. master把对应的chunk handle和所有replicas的地址发回给客户端,客户端将缓存这些数据
  3. 客户端向众多保存了replica的chunkserver中的一个发起请求,请求参数包括了chunk handle和该chunk的一段字节范围。chunk返回相应的数据

并发模型

客户端向GFS写数据的过程

mutation

GFS采用租约的形式对chunk进行修改,持有租约的chunkserver被称作primary。具体过程如下:
1. 客户端询问master,哪一个chunkserver持有对目标chunk的租约,以及其他replica的地址。如果当前没有chunkserver持有租约,master会随机选择一个replica,并将租约赋给对应的chunkserver
2. master将primary的地址,以及其他包含replica的chunkserver的地址返回给客户端。客户端将缓存这些数据,直到primary的租约过期,或者其中的replica不可达
3. 客户端将数据推送个所有的replica,每个chunkserver将数据保存在LRU buffer cache中直到数据被使用或者过期。
4. 当所有relica确认收到数据以后,客户端向primary发送写请求。primary会对收到的修改操作(可能有多个客户端)进行编号,然后按照编号串行执行。
5. 执行完之后,primary按照顺序把这些修改操作转发给所有其他的replica,每一个secondary replica按照顺序执行修改操作
6. 所有的secondary replica回应primary,表示它们完成修改操作
7. primary回应客户端。中间任何一个replica修改遇到的错误都会返回给客户端

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值