`

HDFS 与 GFS 的设计差异

阅读更多
                   HDFS 与 GFS 的设计差异
    我们知道 HDFS 最早是根据 GFS(Google File System)的论文概念模型来设计实现的
    写入模型
    HDFS 在考虑写入模型时做了一个简化,就是同一时刻只允许一个写入者或追加者。
在这个模型下同一个文件同一个时刻只允许一个客户端写入或追加。
而 GFS 则允许同一时刻多个客户端并发写入或追加同一文件。
    允许并发写入带来了更复杂的一致性问题。
多个客户端并发写入时,它们之间的顺序是无法保证的,同一个客户端连续追加成功的多个记录也可能被打断。 这意味着一个客户端在连续写入文件数据时,它的数据最终在文件中的分布可能是不连续的。
    所谓一致性就是,对同一个文件,所有的客户端看到的数据是一致的,不管它们是从哪个副本读取的。
   如果允许多个客户端同时写一个文件,怎么保证写入数据在多个副本间一致?
我们前面讲 HDFS 时它只允许一个写入者按流水线方式写入多个副本,写入顺序一致,写入完成后数据将保持最终一致。 而对多个客户端而言,就必须让所有同时写入的客户端按同一种流水线方式去写入,才可能保证写入顺序一致。
   写入流程
  GFS 使用租约机制来保障在跨多个副本的数据写入中保持顺序一致性。
  GFS Master 将 chunk 租约发放给其中一个副本,这个副本我们就称为主副本,其他副本称为次副本。 由主副本来确定一个针对该 chunk 的写入顺序,次副本则遵守这个顺序,这样就保障了全局顺序一致性。 chunk 租约机制的设计主要是为了减轻 Master 的负担,由主副本所在的 chunkserver 来承担流水线顺序的安排。
   客户端请求 Master 询问哪个 chunkserver 持有租约以及其他副本的位置。
如果没有 chunkserver 持有租约,说明该 chunk 最近没有写操作。
   Master 则选择将租约授权给其中一台 chunkserver。
   Master 返回客户端主副本和次副本的位置信息。
   客户端缓存这些信息以备将来使用。
   客户端以后不再需要联系 Master,除非主副本所在 chunkserver 不可用或返回租约过期了。客户端选择最优的网络顺序推送数据,chunkserver 将数据先缓存在内部的 LRU 缓存中。 GFS 中采用数据流和控制流分离的方法,从而能够基于网络拓扑结构更好地调度数据流的传输。一旦所有的副本确认收到了数据,客户端将发送一个写请求控制命令到主副本。 由主副本分配连续的序列号来确定最终的写入顺序。主副本转发写请求到所有次副本,次副本按主副本安排的顺序执行写入操作。次副本写完后向主副本应答确认操作完成。
最后主副本应答客户端,若任意副本写入过程中出现错误,将报告给客户端,由客户端发起重试。
   GFS 和 HDFS 的写入流程都采用了流水线方式,但 HDFS 没有分离数据流和控制流。
HDFS 的数据流水线写入在网络上的传输顺序与最终写入文件的顺序一致。
而 GFS 数据在网络上的传输顺序与最终写入文件的顺序可能不一致。
GFS 在支持并发写入和优化网络数据传输方面做出了最佳的折衷。
总结
GFS 的论文发表于 2003 年,后来大部分的分布式文件系统设计实现或多或少都参考了 GFS 的设计思路。
而 HDFS 算是开源分布式文件系统中最完整实现了 GFS 论文中的概念模型。
但 HDFS 依然简化了 GFS 中关于并发写的思路,本文就两者的写入模型和过程做了一些对比说明,并希望引发一些思考。
分享到:
评论

相关推荐

    Hadoop源代码分析(重读GFS的文章)

    本文将深入探讨Hadoop分布式文件系统(HDFS)的设计原理,并通过与Google文件系统(GFS)的对比,进一步理解HDFS的关键特性和局限性。 #### 二、HDFS与GFS的设计目标对比 HDFS的设计目标与GFS高度一致,主要体现在...

    云计算之HDFS.ppt

    虽然HDFS受到GFS的启发,两者之间存在一些差异。HDFS采取单一NameNode,存在单点故障风险,而GFS的Master可以通过多台服务器实现冗余。在子服务器管理上,GFS的Chunk Server通过Chubby的独占锁来确认状态,而HDFS的...

    HDFS存储系统浅析.doc

    HDFS受到Google File System(GFS)的影响,但两者在设计上存在差异。例如,HDFS更注重对大规模数据的处理,而GFS可能更适合Google内部特定的工作负载。HDFS强调易用性和容错性,而牺牲了一定的性能和细粒度的文件...

    HDFS和KFS的比较.pdf

    HDFS(Hadoop Distributed File System)和KFS(Kosmos File System)都是GFS(Google File System)的开源实现,它们被设计用来处理大规模分布式存储。HDFS是Hadoop生态系统的一部分,使用Java语言开发,擅长处理高...

    Hadoop分布式文件系统的模型分析.pdf

    因此,本文通过建立HDFS的模型分析,比较其与传统分布式文件系统的差异,试图揭示其在云计算领域中的优势和存在的问题,并为分布式文件系统的理论研究和实际应用提供参考。 HDFS的特性包括海量存储能力、高可靠性...

    hadoop调查报告书

    ### GFS与HDFS的功能比较 #### GFS概览 **特 征** - GFS是Google设计的一种用于内部服务的分布式文件系统。 - 它针对大规模数据集进行优化,可以部署在廉价的硬件上。 - GFS支持高可用性和容错机制。 **架构** - ...

    存储系统设计(头歌)实验全套源码

    5. **分布式存储**:随着大数据的增长,分布式存储系统如Hadoop HDFS和Google File System(GFS)变得越来越重要。这些系统通过在多台服务器上分散数据,提供高可用性和可扩展性。 6. **数据备份与恢复**:源码可能...

    精选_毕业设计_分布式文件系统研究与应用_完整源码

    对比分析它们与传统文件系统的差异,有助于拓宽视野。 5. **源码实现**:通过阅读和分析分布式文件系统的源码,可以深入理解其实现细节,如数据通信、故障检测、数据恢复等机制。 在毕业设计中,你可以选择一种或...

    主流分布式存储技术架构对比分析.docx

    本篇文档将对比分析几种主流的分布式存储技术架构,包括Ceph、GFS、HDFS、Swift和Lustre。 一、Ceph Ceph是一款开源的分布式存储系统,它提供了块存储、对象存储和文件存储的统一解决方案。Ceph的独特之处在于其不...

    分布式os的课件

    3. 分布式存储:分布式文件系统如Hadoop HDFS、GFS,以及NoSQL数据库的原理和应用。 4. 分布式通信:RPC(远程过程调用)、消息队列(MQ)和事件驱动架构。 5. 容错与恢复:副本复制、检查点、故障检测和恢复策略。 ...

    第6章Hadoop—分布式大数据系统78.pptx

    HDFS的灵感来源于Google的GFS(Google File System),旨在处理超过1TB的大数据集。HDFS的基本结构包含NameNode和DataNode,NameNode负责元数据管理,而DataNode则存储实际数据块。数据在HDFS中是以块的形式分布的,...

    面向搜索引擎的分布式文件系统性能分析.pdf

    因此,出现了像GFS(Google File System)和HDFS(Hadoop Distributed File System)这样专门为搜索引擎设计的分布式文件系统。 6. 基于Hadoop的分布式文件系统性能评估 文章提到基于Hadoop的开放架构,系统地评估...

    大数据应用的中存储和处理问题剖析.pptx

    HDFS是Google GFS的开源实现,设计用于处理和存储大规模数据,通过数据复制和容错机制保证了高可用性。MapReduce则是一种用于大规模数据集并行计算的编程模型,实现了高效的数据处理。 Hadoop的优势在于其可扩展性...

    Hadoop源代码分析完整版

    HDFS的设计哲学允许它在底层存储实现上引入高层抽象功能,进而形成了复杂的依赖关系,造成了所谓的“蜘蛛网型”的依赖结构。比如,配置管理模块(conf)需要读取配置文件时依赖文件系统(fs),而文件系统的一些功能...

    Hadoop源代码分析(完整版).pdf

    HDFS的设计模仿了Google的GFS(Google File System),其设计原则是把数据分割成块(block),默认大小为64MB或128MB,并跨整个集群进行存储。HDFS有两个主要的组件:NameNode和DataNode。NameNode是中心节点,负责...

    1.1 MapReduce服务课程资料

    - HDFS是Hadoop分布式文件系统,基于Google发布的GFS论文设计开发。它在通用硬件上运行,具有高容错性、高吞吐量和大文件存储能力。HDFS的三个主要组件包括NameNode、DataNode和Client。 - NameNode负责存储和生成...

    在Windwos环境下使用Eclipse调试hadoop云计算环境[亲测成功]

    在Windows环境下使用Eclipse调试Hadoop云计算环境...然而,需要注意的是,由于Windows与Linux之间的差异,某些Hadoop特性和性能可能会受到影响,因此,在进行复杂或高性能要求的Hadoop开发时,仍然建议使用Linux环境。

    hadoop源码分析

    Hadoop项目的包结构错综复杂,这主要因为Hadoop不仅提供了分布式文件系统HDFS,还提供了屏蔽不同文件系统差异的统一API,如本地文件系统、HDFS以及云存储系统如Amazon S3等。这种多样的文件系统支持导致了各部分之间...

Global site tag (gtag.js) - Google Analytics