为了学习hadoop,便了解了一下Google的文件系统
GFS系统架构
1.GFS系统将整个系统结点分为三个角色
Client是GFS提供给应用程序的访问接口,以库文件的形式提供
Master是GFS的管理节点,负责整个文件系统的管理
Chunk Server负责具体的存储工作
2.GFS实现机制
客户端首先访问Master节点,获取交互的Chunk Server信息,然后访问这些Chunk Server,完成数据存取工作。这种设计方法实现了控制流和数据流的分离。
Client与Master之间只有控制流,而无数据流,极大地降低了Master的负载。
Client与Chunk Server之间直接传输数据流,同时由于文件被分成多个Chunk进行分布式存储,Client可以同时访问多个Chunk Server,从而使得整个系统的I/O高度并行,系统整体性能得到提高。
3.GFS特点
(1)采用中心服务器模式
可以方便地增加Chunk Server Master掌握系统内所有Chunk Server的情况,方便进行负载均衡 不存在元数据的一致性问题
(2)不缓存数据
文件操作大部分是流式读写,不存在大量重复读写,使用Cache对性能提高不大 Chunk Server上数据存取使用本地文件系统从可行性看,Cache与实际数据的一致性维护也极其复杂
(3)在用户态下实现
利用POSIX(简便操作系统)编程接口存取数据降低了实现难度,提高通用性 POSIX接口提供功能更丰富 用户态下有多种调试工具 Master和Chunk Server都以进程方式运行,单个进程不影响整个操作系统 GFS和操作系统运行在不同的空间,两者耦合性降低
4.GFS容错机制
Master容错
当Master发生故障时,在磁盘数据保存完好的情况下,可以迅速恢复以上元数据
为了防止Master彻底死机的情况,GFS还提供了Master远程的实时备份
Chunk Server容错
GFS采用副本的方式实现Chunk Server的容错
每一个Chunk有多个存储副本(默认为三个)
对于每一个Chunk,必须将所有的副本全部写入成功,才视为成功写入
相关的副本出现丢失或不可恢复等情况,Master自动将该副本复制到其他Chunk Server
GFS中的每一个文件被划分成多个Chunk,Chunk的默认大小是64MB
每一个Chunk以Block为单位进行划分,大小为64KB,每一个Block对应一个32bit的校验和