GFS简单介绍

GFS (google file system)

为什么要GFS?

GFS(Google file system)是能储存海量数据的大型分布式文件系统。因为数据量大,不可能单机储存,所以需要将文件分割成很多数据块chunk来进行分布式储存。这样利用很多廉价的机器就可以存储大量的数据。

GFS基本结构——GFS master、GFS chunkServer、client

GFS master(主服务器)、GFS chunkServer(数据块服务器)、client(客户端)三者可简单理解为图书馆关系。client相当于图书馆,GFS master相当于图书馆管理员,GFS chunkServer相当于图书馆中的书柜。我们通过图书馆client为了借到书chunk(书即是我们存储的一个个数据块chunk),首先要通过图书管理员GFS master获得目标书籍chunk的书柜chunkServer的地址,然后找到书柜chunkServer取得其中的一本书chunk。因此GFS master图书管理员不清楚书里的内容,只负责记录书的位置,借出和归还,因此只记录少量的位置数据。我们通过GFS master获得书chunk的位置,然后拿着这个位置就能找到目标chunk,chunk即是海量数据分割后的一个个小块,其中记录大量数据。
在这里插入图片描述
GFS包括一个master结点(元数据服务器/主服务器),多 个chunkserver(数据块服务器)和多个client(运行各种应用的客户端)

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

Master中维护了系统的元数据,包括文件及Chunk名字空间,GFS文件到Chunk之间的映射,Chunk位置信息。它也负责整个系统的全局控制,如Chunk租约管理,垃圾回收无用Chunk,Chunk复制,等等。Master会定期与Chunkserver通过心跳的方式交换信息。

Client是GFS提供给应用程序的访问接口,它是一组专用接口,不遵守POSIX规范,以库文件的形式提供。

数据的存取

写入数据
在这里插入图片描述
读取数据
在这里插入图片描述

Chunk分布

块的大小设置原则:最小化寻址开销
每一个Chunk有多个存储副本,默认大小是64MB

块大小分为64MB比传统文件系统块大:

减少了客户端和master的交互,因为对同一块的读写只需要发送一次初始化请求给master以获取块所在的地址信息。
如果块值大,那么客户端更倾向于只和一个chunkserver建立tcp长连接,而避免和好几个chunkserver建立连接带来网络开销。
块值大就会减少文件分块的数目,文件的元信息也就不需要包括更多的块信息,master就可以把文件的元信息放到内存中提高访问效率
块过大,文件的访问几乎都会集中在某一个chunkserver上,这就容易造成热点问题
master存储的元数据信息,元数据要放到内存以提供快速访问,快太小会造成元数据太多,访问速度慢
将块分为64MB即最小化寻址开销

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值