【分布式系统】GFS(Google File System )详解
GFS
是什么?
GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。
为什么要用GFS?
大量数据的存储会面临很多的难点:
大数据下需要良好的表现就需要分片和容错。在具体操作过程中,涉及到容错一般使用副本来解决,然而副本的使用会面临不一致问题。如果有一致性的要求,就会导致表现降低。
所谓的一致性,就是在集群中表现的像与一台机器或一个副本进行交互那样
因为GFS不但是一个理论成熟的框架结构,更是一种通过长期实际使用证明了其优秀性能的分布式架构。GFS是一种松散一致性模型,这是其具有优越的性能主要原因之一。
松散一致性模型关键:
- 依靠添加而不是重写
- 检查点
- 自我验证(校验和)
- 自我认证记录
组成?
一个GFS集群通常由1个Master,多个ChunkServer组成,并同时接受多个Client的访问。
交互概要图
流程介绍:
client发送请求给Master,寻找存储了对应副本的chunkserver。
Master通过遍历本地记录获取chunkserver的信息,包括处理信息和地址信息
Master不但会在启动时获取集群中所有chunkserver的信息,还会在后续的周期性的获取chunkserver信息。所有的信息都是存在Master的RAM里
Master将信息返回给client
client之后直接通过地址信息与chunkserver交互
GFS交互流程图
要点:
Master通过lease(租约)和Primary Replica(主副本)本来构建交互的流程。
Master是做出决策、创建新的块和赋值,并协调各种系统范围的活动,以保证块完全复制,平衡所有chunkserver的负载,同时还负责垃圾回收。
Master的操作通过锁来保证命名空间范围内的序列化
主副本是从众多chunkserver中选出的唯一特殊副本,该副本的特殊性在于其维护了一个定时的租约列表。
租约指的是一组由用户发来的有顺序的指令集合
主副本之外的副本都需要通过主副本中的这个列表来执行指令,以保证每个副本执行的最终结果相同。
Master失效怎么办
有副本master,拥有master状态的完整副本;GFS论文中设计需要人工干预才能切换到其中一种主故障后的副本。
如何保障副本记录的正确性
使用原子记录至少追加一次的方法。
为什么不使用完全追加?
如果在其中一个写入失败时客户端重新尝试写入,这将导致数据在未失败的副本上多次附加。不同的设计可能会检测到重复的客户端请求,例如,原始故障之间的主要故障请求和客户端的重试。
应用程序如何知道哪些部分组成填充,哪些是重复记录?
为了检测填充,应用程序可以放置一个可预测的幻数在有效记录的开头,或包含一个校验和,该校验和可能仅当记录有效时才有效。该应用程序可以检测通过在记录中包含唯一 ID 来复制。然后,如果它读取与先前记录具有相同 ID 的记录,它知道它们是彼此的重复。GFS 为应用程序提供了一个库处理这些情况。
什么是校验和?
校验和算法将一个字节块作为输入并返回一个单个数字,它是所有输入字节的函数。例如,一个简单校验和可能是输入中所有字节的总和(mod一些大数字)。GFS 存储每个块的校验和以及块。当一个chunkserver在它的磁盘上写一chunk时,它首先计算新块的校验和,并将校验和保存在磁盘上以及块。当一个chunkserver从磁盘读取一个chunk时,它还读取先前保存的校验和,从磁盘读取的块,并检查两个校验和是否匹配。如果数据已被磁盘损坏,校验和不匹配,并且chunkserver 会知道返回错误。另外,一些 GFS应用程序存储自己的校验和,而不是应用程序定义的记录,在 GFS 文件中,以区分正确的记录和填充。
GFS 以正确性换取性能在多大程度上可以接受
这是分布式系统中反复出现的主题。强一致性通常出现在需要复杂且需要交互的协议机器之间。经过利用特定应用程序类可以容忍的放松方式一致性,可以设计出具有良好性能和足够的一致性。例如,GFS 针对 MapReduce 进行了优化对大文件需要高读取性能的应用程序可以在文件中有漏洞,记录显示多次,并且不一致的读取。
Google 是否仍使用 GFS?
有传言说 GFS 已经被一个叫做Colossus,总体目标相同,但在 master 方面有所改进性能和容错性。
【分布式系统】GFS(Google File System )详解相关推荐
- HDFS(hadoop distributed File System)详解
HDFS(hadoop distributed File System)分布式文件系统 特点:高容错性(多个文本副本存储),价格低,高吞吐量. 常见的系统 gfs,HDFS.Lustre .Ceph ...
- GFS - The Google File System
The Google File System http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.125.789&rep=rep1 ...
- 《The Google File System》gfs论文翻译
作者 Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung Google 摘要 GFS(Google File System)是由我们设计并实现的为大 ...
- 三分钟带你弄懂GFS(Google File System)
提示:预计阅读时间三分钟,该文章仅对GFS做了一的简略介绍,细节方面建议阅读原文. 文章目录 前言 一.GFS是什么? 1.1 简单介绍 1.2 我们为什么需要阅读GFS的论文? 1.3 GFS论文对 ...
- GFS架构启示 | Google File System
第一篇,GFS(Google File System)架构启示. GFS是什么? Google早期研发的分布式文件系统. 画外音:与分布式文件系统对应的,是单机文件系统,Windows和Linux操作 ...
- The Google File System(GFS)学习笔记
文章目录 引子 GFS的架构 读数据 写数据 流水线式的网络数据传输 记录追加 总结 引子 这篇文章是我学习极客时间徐文浩老师的<大数据经典论文解读>课程的学习笔记,大量的文字和图片来自专 ...
- 【转】The Google File System 中文版
原文链接 http://www.cnblogs.com/lijunjie/archive/2011/03/08/1976660.html#top 摘要 我们设计并实现了Google GFS文件系统,一 ...
- The Google File System
摘要 我们设计并实现了Google GFS文件系统,一个面向大规模数据密集型应用的.可伸缩的分布式文件系统.GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量客户机提供了高性 ...
- MapReduce论文中文版--The Google File System
摘要 MapReduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现.用户首先创建一个Map函数处理一个基于 key/value pair的数据集合,输出中间的基于key/valu ...
最新文章
- 楚留香手游系统互通的服务器,楚留香手游互通服务器汇总 哪些服能一起玩
- 前端基础入门第一阶段-Web前端开发基础环境配置
- win10定时关机c语言,Win10系统怎么定时关机?Windows10设置定时关机的两种方法
- python在中小学教学中的应用-在python程序中的进程操作
- 计算几何中的线段相交判断问题
- android控件---自定义带文本的ImageButton
- Terraform 多云管理工具
- 创建没有Document的MFC MDI应用程序
- CentOS7下使用yum安装MariaDB
- 联想微型计算机电脑黑屏怎么做系统,联想电脑黑屏怎么办 5种方法轻松排除黑屏故障...
- Android基础学习第二篇—Activity
- ms12_004漏洞进行渗透
- sqlmap的篡改绕过WAF
- 绕过限制,申请Google+
- python更新包列表出错_python – 完整更新pip包时出错
- B站视频下载方法(4K60帧)
- 亚马逊美国站审核便携式火炉逊、户外烧烤架ASTM F3363测试项目
- 相机对焦、标定等近期学习
- 淘宝Hadoop作业平台宙斯(zeus)开源
- JAVA 九大排序算法