分布式文件系统

分布式文件系统之GFS

1 分布式文件系统的功能:

存储文档、图像、视频类的Blob数据(binary large object)

作为分布式表格系统的持久层

2 google 文件系统(GFS)

   2.1 概念

GFS是构建在廉价服务器之上的大型分布式系统,Bigtable、Megastore、Percolator均构建在GFS之上

2.2 GFS系统架构

2.2.1节点角色

GFS Master、GFS ChunkServer 、GFS Client

2.2.2注意点

GFS的客户端不缓存文件数据,只缓存从Master获取到的元数据,理由如下

MapReduce中客户端使用方式为顺序读写,没有缓存文件数据的必要

Bigtable,内部实现了一套缓存机制

2.3,要点问题

2.3.1租约机制

理由:如果每一次记录追加都需要请求Master,那么Master显然会成为系统的性能瓶颈,因此GFS通过租约(lease)机制将chunk写操作授权给ChunkServer

chunkServer:拥有租约授权的chunkServer称为主ChunkServer,其他副本所在的ChunkServer称为备ChunkServer

价值:在租约有效期内,对该chunk的写操作都是由主ChunkServer负责,从而减轻Master的负载

一致性:某些副本因为其所在的chunkServer下线过程中发生变更会带来的副本不一致问题,GFS通过对每个chunk维护一个版本号来解决

2.3.2 一致性模型
GFS是为了追加而非改写而设计
为了追求可用性和性能,GFS呈弱一致性,因此上层系统需要强一致型来保证整体的一致性
2.3.2.1弱一致性:
正常情况:追加成功的记录在GFS各个副本确定并且严格一致
异常情况:某些副本追加成功,而某些追加失败
异常处理:失败的副本可能会出现一些可识别的填充记录,重试追求失败的副本,因此在此过程中,有些可能出现记录在某些副本中追加了多次,也可能出现一些可识别的填充记录
2.3.3 追加流程
2.3.3.1流程

1,C(客户端)向M(Master) 请求chunk每个副本所在的CS(ChunkServer),其中主CS持有修改租约

2,M向C返回主副本和备副本所在的CS的位置信息,C将缓存这些信息供以后使用

3,C将待追加的记录发生到每一个副本所在的CS(数据流向基于网络拓扑结构),每一个CS都会将这些记录缓存在LRU(Least Recently Used)结构中

4,当所有CS都确认收了数据,C发起一个写请求控制命令给主CS,主CS顺序写入(可能存在多个C请求写入数据的情况)数据后,将写请求分发给备CS,备CS写入完毕后应答主CS,主CS应答C

异常处理:如果出现主CS写入成功而备副本写入失败的情况下,C将重试

2.3.3.2特色
流水线:为了减少延时,当一个ChunkServer接收到一些数据,它就立即开始转发
分离数据流和控制流:在每次追加数据量比较大的前提下,可采用数据流和控制流分离来优化传输

2.3GFS与HDFS区别

HDFS与GFS的设计目标是高度一致的,在架构、块大小、元数据等的实现上,HDFS与GFS大致一致。但是在某些地方,仍有较大的差别

1,快照

GFS中可以利用快照功能非常快速的对文件或目录进行拷贝,并不影响当前操作,GFS中生成快照的方式叫copy-on-write,文件备份的时候只是将快照文件

指向原chunk,增加对chunk 的引用计数而已,等到chunk上执行写操作时,chunkServer 才会拷贝chunk,后续的修改操作落在新生成的chunk上

而HDFS暂不支持快照功能,而是运用最基础的复制来完成

使用快照的好处:当HBase上的数据在进行重新划分时(过程类似于hash平衡),HDFS需要对其中的所有数据(P/T级的)进行复制迁移,而GFS只需要快照,由此可以看到快照带来的极大便利!

2,记录追加操作

GFS提供一个相对宽松的一致性模型,并支持写和追加操作,写操作可以使我们随机写文件,追加操作使得并行追加更加操作和

HDFS文件只允许一次打开并追加数据,客户端先把所有数据写入本地的临时文件中,等到数据量达到一个Chunk的大小(通常为64MB),请求HDFS Master分配工作机及Chunk编号,将一个Chunk的数据一次性写入HDFS文件。由于累积64MB数据才进行实际写HDFS系统,对HDFS Master造成的压力不大,不需要类似GFS中的将写Lease授权给CS的机制,且没有了重复记录和乱序的问题,大大地简化了系统的设计。

HDFS由于不支持Append模型带来的很多问题,构建于HDFS之上的Hypertable和HBase需要使用HDFS存放表格系统的操作日志,由于HDFS的客户端需要攒到64MB数据才一次性写入到HDFS中,Hypertable和HBase中的表格服务节点(对应于Bigtable中的Tablet Server)如果宕机,部分操作日志没有写入到HDFS,可能会丢数据

3,GC

GFS垃圾回收采用惰性回收策略,即master并不会立即回收程序所删除的文件资源。 GFS选择以一种特定的形式标记删除文件(通常是将文件名改为一个包含时间信息的隐藏名字),这样的文件不再被普通用户所访问。Master会定期对文件的命名空间进行检查,并删除一段时间前的隐藏文件(默认3天)。
 
HDFS并没有采用这样的垃圾回收机制,而是采取了一种更加简单但是更容易实现的直接删除方式。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值