Google
云计算平台技术架构
¢文件存储,Google Distributed File System,GFS
¢并行数据处理MapReduce
¢分布式锁Chubby
¢分布式结构化数据表BigTable
¢分布式存储系统Megastore
¢分布式监控系统Dapper
一、Google文件系统GFS
分三大块来讲的,
系统架构、容错机制、系统管理技术
1、
系统架构
Client
(客户端):应用程序的访问接口
Master(主服务器):管理节点,在逻辑上只有一个,保存系统的元数据,负责整个文件系统的管理
ChunkServer(数据块服务器):负责具体的存储工作。数据以文件的形式存储在ChunkServer上
关于上面的架构图之前看到过一篇博客,上面对其机架感知(Rack Awareness)机制有一个简单的表示,很可惜博客竟未找到,大致是:
对于Rack Awareness——Rack1:Chunk1 、Chunk4、Chunk7……Rack n:Chunk2、Chunk 5、Chunk6……
而对于ns:file——Chunk1、Chunk2……
这样,两者一结合,查找文件块、甚至对相对的查找的优化等比较方便
GFS特点:
[table=920,#ffffff,,0][tr][td]
采用中心服务器模式
[/td][/tr][tr][td]
u可以方便地增加Chunk Server
u Master掌握系统内所有Chunk Server的情况,方便进行负载均衡
u不存在元数据的一致性问题
[/td][/tr][tr][td]
不缓存数据
[/td][/tr][tr][td]
˜文件操作大部分是流式读写,不存在大量重复读写,使用Cache对性能提高不大
˜ Chunk Server上数据存取使用本地文件系统,若读取频繁,系统具有Cache
˜从可行性看,Cache与实际数据的一致性维护也极其复杂
[/td][/tr][tr][td]
在用户态下实现
[/td][/tr][tr][td]
¨利用POSIX编程接口存取数据降低了实现难度,提高通用性
¨POSIX接口提供功能更丰富
¨用户态下有多种调试工具
¨Master和Chunk Server都以进程方式运行,单个进程不影响整个操作系统
¨GFS和操作系统运行在不同的空间,两者耦合性降低
[/td][/tr][tr][td]
只提供专用接口
[/td][/tr][tr][td]
¢降低实现的难度
¢对应用提供一些特殊支持
¢降低复杂度
[/td][/tr][/table]
2、容错机制
Master容错
Name Space,文件系统目录结构
Chunk与文件名的映射
Chunk副本的位置信息(默认有三个副本)
单个Master,对于前两种元数据,GFS通过操作日志来提供容错功能
第三种元数据信息保存在各个
ChunkServer
上,
Master
故障时,
磁盘恢复
GFS还提供了Master远程的
实时备份,防止Master彻底死机的情况
Chunk Server容错
[font='Wingdings 3']u
采用副本方式实现
Chunk Server
容错
¨
每一个
Chunk
有多个存储副本(默认为三个),分布存储在不同的
Chunk Server
上用户态的
GFS
不会影响
Chunk Ser
ver
的稳定性
¨
副本的分布策略需要考虑多种因素,如网络的拓扑、机架的分布、磁盘的利用率等
¨
对于每一个
Chunk
,必须将所有的副本全部写入成功,才视为成功写入
尽管一份数据需要存储三份,好像磁盘空间的利用率不高,但综合比较多种因素,加之磁盘的成本不断下降,采用副本
无疑是最
简单、最可靠、最有效,而且实现的难度也最小的一种方法。
¨ GFS中的每一个文件被划分成多个Chunk,Chunk的默认大小是64MB
¨Chunk Server存储的是Chunk的副本,副本以文件的形式进行存储
¨ 每个Chunk又划分为若干Block(64KB),每个Block对应一个32bit的校验码,保证数据正确(若某个Block错误,
则转移至其他Chunk副本)
系统管理技术