GFS-Google论文阅读笔记

GFS是Google设计的面向大规模数据应用的分布式文件系统,以高容错性和自动恢复为设计理念。它强调高性能带宽,采用单一Master节点管理元数据,文件以大chunk存储,支持记录追加操作。客户端通过Master获取chunk位置,直接与Chunk服务器交互,减少与Master的通信。GFS通过租约和快照机制保证数据一致性,通过复制策略保证可用性。
摘要由CSDN通过智能技术生成

众所周知,Hadoop的存储基础,HDFS分布式文件系统,是按照GFS的思想实现的。

本文参考:Google File System 中文版 1.0 版 译者 alex,原文地址 http://blademaster.ixiezi.com/

GFS是面向大规模数据密集型应用的,可伸缩的分布式文件系统。

1. 重要设计思路

  1. 组件失效被认为是常态而不是突发事件,高度强调灾备和自动恢复
  2. 按照文件非常巨大的方向设计
  3. 绝大部分修改是在文件尾部追加,而不是覆盖原有数据:文件写完之后对文件最多的操作是读取,客户端无需缓存数据块,通过数据追加来优化性能和保证原子性
  4. 应用程序和文件系统API的协同设计提高系统灵活性。e.g. 通过原子性的记录追加的引入.放松GFS对一致性模型的要求

2. 设计概述

2.1 设计预期

  • 对于小文件随机读取的解决方式:通常做法是把小规模的随机读取操作合并并排序,之后按照顺序批量读取,这样可以避免在文件中前后来回读取位置

  • 高性能带宽比低延迟重要,我们要求高速数据交换,不要求响应时间

    这一特性在做数据分析的时候没有问题,但是对于要求相应时间的工作上,后来又提出了许多解决方案,但并没有实质上改变这一设计初衷

2.2 接口

GFS提供了一套类似传统文件系统的API接口,虽然并不是严格按照POSIX(The Portable Operating System Interface)等标准实现的。

  • 快照:快照以很低的成本创建一个文件或者目录树的拷贝。
  • 记录追加:操作允许多个客户端同时对一个文件进行数据追加操作,同时保证每个客户端的追加操作都是原子性的。这对于实现多路结果合并,以及生产者-消费者队列非常有用,多个客户端可以在不需要额外的同步锁定的情况下,同时对一个文件追加数据。

2.3 架构

  • Master 节点:

    管理所有的文件系统元数据。这些元数据包括名字空间、访问控制信息、文件和 Chunk 的映射信息、以及当前 Chunk 的位置信息。 Master 节点还管理着系统范围内的活动,比如, Chunk 租用管理(Lease)、(orphaned )孤儿 Chunk的回收、以及 Chunk 在 Chunk 服务器之间的迁移。 Master 节点使用心跳信息周期地和每个 Chunk服务器通讯,发送指令到各个 Chunk 服务器并接收 Chunk 服务器的状态信息。

  • Chunk节点:

    在 Chunk 创建的时候, Master 服务器会给每个 Chunk 分配一个不变的、全球唯一的 64 位的 Chunk 标识。 Chunk 服务器把 Chunk 以 Linux 文件的形式保存在本地硬盘上,并且根据指定的 Chunk 标识和字节范围来读写块数据。

无论是客户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值