GFS论文笔记

前言

这是看GFS的论文的研读笔记。

GFS设计目的

  • 满足日益增长的数据处理需求

GFS设计的目标

高性能,可伸缩,高可靠,高可用

  • 高性能:一般是指时间复杂度小,空间复杂度小,CPU占用时间少等
  • 可伸缩:指程序性能硬件资源的增加和减少而增强或减弱的能力,可伸缩有很多种,线性伸缩(世界人民的目标),超线性伸缩,负伸缩等,但是随着程序规模的增大,伸展性会越来越差
  • 可靠性:指程序在规定条件下,在规定时间内完成规定任务的能力
  • 可用性:就是一个系统处在可工作状态的时间的比例

GFS设计假设

  • 组件失效被认为是常态事件,而不是意外事件。(容错能力)
  • 系统存储一定数量的大文件。(大数据)
  • 系统的工作负载主要由两种读操作组成:大规模的流式读取和小规模的随机读取。(读写模型)
  • 系统的工作负载还包括许多大规模的、顺序的、数据追加方式的写操作。(读写模型)
  • 系统必须高效的、行为定义明确的实现多客户端并行追加数据到同一个文件里的语意。
  • 高性能的稳定网络带宽远比低延迟重要。

GFS设计架构

GFS论文笔记_第1张图片
GFS架构图.png

注解:

  • 元数据:命名空间、访问控制信息、文件和Chunk的映射信息、以及当前Chunk的位置信息
  • 心跳:master以心跳周期来和chunk通信,给chunk指示以及收集他们当前状态

GFS系统设计的优点

  • 容错性:每个块都会复制到多个块服务器上。缺省情况下,我们使用3个存储复制节点,不过用户可以为不同的文件命名空间设定不同的复制级别。
  • 单一的Master节点:单一的Master简化了设计,使架构能变得简单。Master一般会返回离Client最近的文件副本(减少网络IO)
  • Client采用库形式:GFS客户端代码以库的形式被链接到客户程序里。客户端代码实现了GFS文件系统的API接口函数、应用程序与Master节点和Chunk服务器通讯、以及对数据进行读写操作
  • Chunk的大小选择:默认为64MB, 较大Chunk尺寸减少Client和Master通讯,减少Master存储元数据的大小,Client对一个Chunk能进行多次操作,减少网络IO。

GFS系统的缺点

  • 单一的Master节点:有可能成为系统瓶颈,需要减少对Master的读写较大
  • Chunk尺寸的缺点:小文件会存储为一个Chunk,多个Client同时对单个小文件多次操作时,存放这个Chunk的Server会成为热点

系统缺点的解决:

  • 单一的Master节点:Client只询问Master相关文件的元数据信息,Client对元数据信息做适当缓存,后面的具体读写操作均在Chunk上

GFS交互流程

GFS论文笔记_第2张图片
GFS数据交换操作图.png

你可能感兴趣的:(GFS论文笔记)