GFS-The Google File System初学总结

写在最前:笔者初学gfs有什么理解不当的地方,欢迎在评论区指出,不胜感激。

一.GFS简介

gfs全称Google File System,Google文件系统。是谷歌自主研发的可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。

二.组织架构

架构

既然gfs是分布式文件系统,必然有分工合作的划分:

GFS包括

  • 一个master结点(元数据服务器,管理所有chunkserver的节点,只管理,不存放数据)
  • 多个chunkserver(数据服务器,真正存放数据的节点)
  • 多个client(运行各种应用的客户端,可以发出写入/读出某个文件的请求)。

简要画图可以理解为:

在这里插入图片描述

注意的点:

  • 在可靠性要求不高的场景,client和chunkserver可以位于一个结点。
  • 一般一个逻辑的Master节点包括两台物理主机,即两台Master服务器(以防有一个master主机down掉了,导致整个系统瘫痪)
  • 每一结点都可以是普通的Linux服务器,GFS的工作就是协调成百上千的服务器为各种应用提供服务

gfs的数据存储方式

那么,gfs的数据存储方式究竟是怎样的呢?

GFS存储的文件都被分割成固定大小的Chunk(64MB)。
在Chunk创建的时候,Master服务器会给每个Chunk分配一个不变的、全球唯一的 64位的Chunk标识。Chunkserver把Chunk以linux文件的形式保存在本地硬盘上,并且根据指定的Chunk标识和字节范围来读写块数据。

首先我们先了解一个定义:元数据
命名空间(文件和chunk的名称)、文件和Chunk的映射关系(一个文件包含哪些Chunk)、每个Chunk副本的位置信息。这三类信息都被统称为元数据。

master会持久化存储一部分元数据(存在内存中)。而文件被分割成为多个chunk之后,则被分配存储到相应的chunkserver中,写入chunkserver的磁盘。

而为了保证数据的可读性,在没有特殊指定(缺省)的情况下,我们把每个文件的chunk创建两个副本,加上原来有的,一共写入三次,只要没有三个写入都丢失,那么我们就能找到这个文件的数据。

我稍微丰富了一下架构图:

在这里插入图片描述

黄底的为持久化存储的数据,橙底的是只保存在内存的数据(没有回退之类的保障)。

刚刚我们说到master只会保存一部分元数据:

master保存每个Chunk副本的位置,和其他两种元数据不同的是: Master服务器不会持久保存Chunk位置信息。Master服务器在启动时,或者有新的Chunk服务器加入时,向各个Chunk服务器轮询它们所存储的Chunk的信息。后续也会定期轮询各个chunkserver获取信息。

而前两种类型的元数据(命名空间、文件和Chunk的对应关系)会被持久化存储:以记录变更日志的方式记录在操作系统的系统日志文件中,日志文件存储在本地磁盘上,同时日志会被复制到其它的远程Master服务器上。
采用保存变更日志的方式,我们能够简单可靠的更新Master服务器 的状态,并且不用担心Master服务器崩溃导致数据不一致的风险。如果mstaer服务器产生错误,我们能通

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值