本文主要是介绍技术解析Google文件系统GFS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Google文件系统(Google File System,GFS)是一个大型的分布式文件系统。它为Google云计算提供海量存储,并且与Chubby、MapReduce以及Bigtable等技术结合十分紧密,处于所有核心技术的底层。系统架构
GFS的系统架构如图所示。GFS将整个系统的节点分为三类角色:Client(客户端)、Master(主服务器)和Chunk Server(数据块服务器)。Client是GFS提供给应用程序的访问接口,它是一组专用接口,不遵守POSIX规范,以库文件的形式提供。应用程序直接调用这些库函数,并与该库链接在一起。Master是GFS的管理节点,在逻辑上只有一个,它保存系统的元数据,负责整个文件系统的管理,是GFS文件系统中的“大脑”。Chunk Server负责具体的存储工作。数据以文件的形式存储在Chunk Server上,Chunk Server的个数可以有多个,它的数目直接决定了GFS的规模。GFS将文件按照固定大小进行分块,默认是64MB,每一块称为一个Chunk(数据块),每个Chunk都有一个对应的索引号(Index)。
GFS实现了控制流和数据流的分离。Client和Master之间只有控制流,没有数据流,极大地降低了Master的负载。Client和Chunk Server之间直接传输数据流,同时由于文件被分为多个Chunk进行分布式存储,Client可以同时访问多个Chunk Server,从而使整个系统的IO高度并行,整体性能得到提高
GFS的系统架构
刘鹏《云计算(第二版)》
①~⑤是控制流,⑥是数据流
Client: 应用程序的访问接口
Master(主服务器):管理节点,在逻辑上只有一个,保存系统的元数据(Metadata,描述数据的数据),负责整个文件系统的管理。
Chunk Server(数据库服务器):负责具体的存储工作。数据以文件的形式存储在Chunk Server上。
架构设计成这样的好处是:
1、Client和Master之间只有控制流(①~⑤),没有数据流,因此降低了Master的负载 (因为控制流只需传送指令和状态,数据量小)
2、Client与Chunk Server之间直接传输数据流,同时由于文件被分成多个chunk进行分布式存储,因此Client可以同时并行访问多个Chunk Server,从而让系统的I/O并行度提高
GFS的特点:
1、采用中心服务器模式
好处是:(1)可以方便的增加Chunk Server
(2)Master可以掌握系统内所有Chunk Server的情况,方便进行负载均衡
(3)不存在元数据的一致性问题(因为只有一个中心server,所以云数据也只有一份)
2、不缓存数据(没有系统cache)
好处是:(1)文件操作大部分是流式读写,不存在大量重复的读写,因此即使使用cache对系统性能的提高也不大
(2)Chunk Server上的数据存储在本地文件系统上(Linux File System),若真的出现频繁存取,那么本地文件系统的cache也可以支持
(3)若建立系统cache,那么cache中的数据与Chunk Server中的数据的一致性很难保证
思考:
GFS采用中心服务器的模式,该模式的最大优点是便于管理,因为中心服务器可以获知所有子服务器的状态,因而可以很方便的得知各个子服务器的负载状况等。但是这一模式也有一个比较致命的缺点,那就是单点故障。当单点故障发生在中心服务器时,将导致整个系统的不可用。
不过,按照上述描述,GFS的中心服务器只是逻辑上是一个,因此可以想象,其实GFS的Manster还是有后备机制的,因此GFS比较像伪集中式管理。
这篇关于技术解析Google文件系统GFS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!