0%

GFS

GFS

Google文件系统(GFS)是最早一批的文件系统,不得不说Google公司的技术是真的牛,发布的论文都是现在很多开源项目的理论基石,像HDFS、TFS等都是借鉴的GFS的思路

当时Google发表了两篇与GFS和MapReduce相关的论文,而Hadoop就是基于这两篇论文的思想实现的

系统结构

GFS系统的节点可分为三种角色:GFS Master(主控服务器)、GFS ChunkServer(CS,数据块服务器)以及GFS客户端

GFS文件被划分为固定大小的数据块(chunk),由主服务器在创建时分配一个64位全局唯一的chunk句柄,CS以普通的Linux文件的形式将chunk存储在磁盘,为了保证可靠性,chunk在不同的机器中复制多份

主控服务器

主控服务器中维护了系统的元数据,包括文件及chunk命名空间(需要持久化)、文件到chunk之间的映射(需要持久化)、chunk位置信息(不需要持久化,可以通过ChunkServer汇报获取),也负责整个系统的全局控制,如chunk租约管理、立即回收无用chunk、chunk复制等,主控服务器会定期与CS通过心跳的方式交换信息

其性能关注点在内存

数据块服务器

数据块服务器ChunkServer来管理chunk用来存储数据,每个chunk以Block为单位进行划分,存储的时候需要保证chunk尽可能均匀的分布在不同的磁盘中

其性能关注点在磁盘和网络IO

客户端

客户端是GFS提供给应用程序的访问接口,是一组专用接口,客户端访问GFS时,会首先访问主控服务器节点,获取与之进行交互的CS信息,然后直接访问这些CS,完成数据存取工作

租约机制

GFS数据追加以记录为单位,每个记录的大小为几十KB到几MB不等,如果每次记录追加都需要请求Master,那么Master会成为系统的性能瓶颈,GFS采用了租约机制将chunk写操作授权给ChunkServer,拥有租约授权的ChunkServer称为主ChunkServer,其他副本所在的ChunkServer称为备ChunkServer

租约授权针对单个chunk,在租约有效期内,对该chunk的写操作都由主ChunkServer负责,从而减轻了Master的负载,只要没有出现异常,主ChunkServer可以不断向Master请求延长租约的有效期直到整个chunk写满

欢迎关注我的其它发布渠道