`
QING____
  • 浏览: 2232787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

GFS学习(二)

 
阅读更多
、系统交互

  1)租约(lease)和修改顺序

  2)数据流

  我们的目标是充分利用每个机器的网络带宽,避免网络瓶颈和延迟.

  为了有效的利用网络,我们将数据流和控制流分离。数据是以流水线的方式在选定的chunkerserver链上线性的传递的。每 个机器的整个对外带宽都被用作传递数据。为避免瓶颈,每个机器在收到数据后,将它收到数据尽快传递给离它最近的机器。

  3)原子性的record Append

  GFS 提供了一个原子性的添加操作:record append。在传统的写操作中,client指定被写数据的偏移位置,向同一个区间的并发的写操作是不连续的:区间有可能包含来自多个client的数据碎片。在record append中, client只是指定数据。GFS在其选定的偏移出将数据至少原子性的加入文件一次,并将偏移返回给client

  在分布式的应用中,不同机器上的许多client可能会同时向一个文件执行添加操作,添加操作被频繁使用。如果用传统的wri e操作,可能需要额外的、复杂的、开销较大的同步,例如通过分布式锁管理。在我们的工作量中,这些文件通常以多个生产者单个消费者队列的方式或包含从多个不同client的综合结果。

  Record append和前面讲的write操作的控制流差不多,只是在primary上多了一些逻辑判断。首先,client将数据发送到文件最后一块的所有副本上。然后向primary发送请求。Primary检查添加操作是否会导致该块超过最大的规模(64M )。如果这样,它将该块扩充到最大规模,并告诉其它副本做同样的事,同时通知client该操作需要在下一个块上重新尝试。如果记录满足最大规模的要求,primary就会将数据添加到它的副本上,并告诉其它的副本在在同样的偏移处写数据,最后primaryclient报告写操作成功。如果在任何一个副本上record append操作失败,client将重新尝试该操作。这时候,同一个块的副本可能包含不同的数据,因为有的可能复制了全部的数据,有的可能只复制了部分。GFS不能保证所有的副本每个字节都是一样的。它只保证每个数据作为一个原子单元被写过至少一次。这个是这样得出的:操作要是成功,数据必须在所有的副本上的同样的偏移处被写过。进一步,从这以后,所有的副本至少和记录一样长,所以后续的记录将被指定到更高的偏移处或者一个不同的块上,即使另一个副本成了primary。根据一致性保证,成功的record append操作的区间是已定义的。而受到干扰的区间是不一致的。



 

  4)快照(snapshot

  快照操作几乎在瞬间构造一个文件和目录树的副本,同时将正在进行的其他修改操作对它的影响减至最小。

  我们使用copy-on-write技术来实现snapshot。当master收到一个snapshot请求时,它首先将要snapshot的文件上块上的lease。这使得任何一个向这些块写数据的操作都必须和master交互以找到拥有lease的副本。这就给master一个创建这个块的副本的机会。

  副本被撤销或终止后,master在磁盘上登记执行的操作,然后复制源文件或目录树的metadata以对它的内存状态实施登记 的操作。这个新创建的snapshot文件和源文件(其metadata)指向相同的块(chunk)。

  Snapshot 之后,客户第一次向chunk c写的时候,它发一个请求给master以找到拥有lease的副本。Master注意到chunk c的引用记数比1大,它延迟对用户的响应,选择一个chunk handle C’,然后要求每一有chunk c的副本的chunkserver创建一个块C’。每个chunkserver在本地创建chunk C’避免了网络开销。从这以后和对别的块的操作没有什么区别。

MASTER操作

  MASTER执行所有名字空间的操作,除此之外,他还在系统范围管理数据块的复制:决定数据块的放置方案,产生新数据块并将其备份,和其他系统范围的操作协同来确保数据备份的完整性,在所有的数据块服务器之间平衡负载并收回没有使用的存储空间。

  3.1 名字空间管理和加锁

  与传统文件系统不同的是,GFS没有与每个目录相关的能列出其所有文件的数据结构,它也不支持别名(unix中的硬连接或符号连 接),不管是对文件或是目录。GFS的名字空间逻辑上是从文件元数据到路径名映射的一个查用表。

  MASTER在执行某个操作前都要获得一系列锁,例如,它要对/d1/d2…/dn/leaf执行操作,则它必须获得/d1/ d1/d2/d1/d2/…/dn的读锁,/d1/d2…/dn/leaf的读锁或写锁(其中leaf可以使文件也可以是目录)。MASTER操作的并行性和数据的一致性就是通过这些锁来实现的。

  3.2 备份存储放置策略

  一个GFS集群文件系统可能是多层分布的。一般情况下是成千上万个文件块服务器分布于不同的机架上,而这些文件块服务器又被分布于不同机架上的客户来访问。因此,不同机架上的两台机器之间的通信可能通过一个或多个交换机。数据块冗余配置策略要达到连个目的:最大的数据可靠性和可用性,最大的网络带宽利用率。因此,如果仅仅把数据的拷贝置于不同的机器上很难满足这两个要求,必须在不同的机架上进行数据备份。这样即使整个机架被毁或是掉线,也能确保数据的正常使用。这也使数据传输,尤其是读数据,可以充分利用带宽,访问到多个机架,而写操作,则不得不涉及到更多的机架。

  3.3 产生、重复制、重平衡数据块

  当MASTER产生新的数据块时,如何放置新数据块,要考虑如下几个因素:(1)尽量放置在磁盘利用率低的数据块服务器上,这样,慢慢地各服务器的磁盘利用率就会达到平衡。(2)尽量控制在一个服务器上的新创建的次数。(3)由于上一小节讨论的原因,我们需要把数据块放置于不同的机架上。

  MASTER在可用的数据块备份低于用户设定的数目时需要进行重复制。这种情况源于多种原因:服务器不可用,数据被破坏,磁盘被破坏,或者备份数目被修改。每个被需要重复制的数据块的优先级根据以下几项确定:第一是现在的数目距目标的距离,对于能阻塞用户程序的数据块,我们也提高它的优先级。最后,MASTER按照产生数据块的原则复制数据块,并把它们放到不同的机架内的服务器上

  MASTER周期性的平衡各服务器上的负载:它检查chunk分布和负载平衡,通过这种方式来填充一个新的服务器而不是把其他的内容统统放置到它上面带来大量的写数据。数据块放置的原则与上面讨论的相同,此外,MASTER还决定哪些数据块要被移除,原则上他会清除那些空闲空间低于平均值的那些服务器。

  3.4 垃圾收集

  在一个文件被删除之后,GFS并不立即收回磁盘空间,而是等到垃圾收集程序在文件和数据块级的的检查中收回。

  当一个文件被应用程序删除之后,MASTER会立即记录下这些变化,但文件所占用的资源却不会被立即收回,而是重新给文件命了一个隐藏的名字,并附上了删除的时间戳。在MASTER定期检查名字空间时,它删除超过三天(可以设定)的隐藏的文件。在此之前,可以以一个新的名字来读文件,还可以以前的名字恢复。当隐藏的文件在名字空间中被删除以后,它在内存中的元数据即被擦除,这就有效地切断了他和所有数据块的联系。

  在一个相似的定期的名字空间检查中,MASTER确认孤儿数据块(不属于任何文件)并擦除他的元数据,在和MASTER的心跳信 息交换中,每个服务器报告他所拥有的数据块,MASTER返回元数据不在内存的数据块,服务器即可以删除这些数据块。

  3.5 过时数据的探测

  在数据更新时如果服务器停机了,那么他所保存的数据备份就会过时。对每个数据块,MASTER设置了一个版本号来区别更新过的数 据块和过时的数据块。

  当MASTER授权一个新的lease时,他会增加数据块的版本号并会通知更新数据备份。MASTER和备份都会记录下当前的版本号,如果一个备份当时不可用,那么他的版本号不可能提高,当ChunkServer重新启动并向MASTER报告他的数据块集时,MASTER就会发现过时的数据。

  MASTER在定期的垃圾收集程序中清除过时的备份,在此以前,处于效率考虑,在各客户机应答时,他会认为根本不存在过时的数据。作为另一个安全措施,MASTER在给客户及关于数据块的应答或是另外一个读取数据的服务器数据是都会带上版本信息,在操作前客户机和服务器会验证版本信息以确保得到的是最新的数据。

 

 

[GFS学习(一):http://shift-alt-ctrl.iteye.com/blog/1842191]

[GFS学习(三):http://shift-alt-ctrl.iteye.com/blog/1842219]

  • 大小: 20.6 KB
分享到:
评论

相关推荐

    GFS2文件系统介绍

    gfs2的基本组成,安装及安装使用时的注意事项。对于学习gfs2的人来说可以看看。

    RHCS和GFS培训

    详细介绍红帽集群和GFS的配置部署,快来部署自己的集群和GFS服务吧

    gfs系统缺点浅析

    浅析GFS系统缺陷

    自动下载并保存GFS数据的Shell脚本

    自动下载并保存GFS数据的Shell脚本,支持自动下载GFS气象数据并保存进数据库,便于与cron结合实现自动下载并保存。

    redhat5.5的gfs安装包

    redhat5的gfs安装包。亲测可用。 包含的rpm包有: cman-2.0.115-1.el5.x86_64.rpm gfs-utils-0.1.20-1.el5.x86_64.rpm gfs2-utils-0.1.62-1.el5.x86_64.rpm ipvsadm-1.24-10.x86_64.rpm kmod-gfs-0.1.34-2.el5.x86_...

    GFS分布式文件系统

    本文介绍GFS分布式文件系统的技术设计原理,是学习分布式文件系统的资料

    GFS文件系统预研报告、GFS文件系统体系结构、安装流程、命令行操作

    在实验环境下,GFS文件系统统一安装到了redhat linux7。2下,(最好不要使用redhat 7.1,因为GFS安装成功后,可能会使系统启动失败)因为GFS5。0要求linux的内核必须是2.4.16以上。所以在安装GFS文件系统之前,需要...

    Gfs Paper.rar

    google的gfs论文,英文原版,研究大数据入门的必读论文

    Hadoop GFS

    包含 Hadoop GFS MapReduce 的 多个PDF文档

    GFS资料下载工具

    GFS资料下载工具 用VC++编写 GFS VC++网络编程

    Google文件系统GFS

    GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。 1、设计概览

    Google GFS

    Google GFS File system

    GFS BigTable MapReduce中文版

    GFS BigTable MapReduce中文版

    redhat的GFS安装使用指南(Administrator's guide)

    redhat的GFS安装使用指南(Administrator's guide)。内容包括 gfs介绍,GFS安装环境准备,gfs安装步骤,gfs启动,gfs管理配置等内容。

    RHEL5-GFS2

    本书提供有关配置及维护红帽 GFS2(红帽全局文件系统 2)的信息。

    GFS分布式文件系统实验包

    GFS分布式文件系统实验包

    谷歌论文GFS中文版

    我们设计并实现了Google GFS文件系统,一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量客户机提供了高性能的服务

    google gfs

    google gfs 中文文档。。。我们已经为Google迅速增长的数据处理需要而设计和实现了Google File System(GFS)。GFS和上一个分布式文件系统有着很多相同的设计目标,比如性能,扩展性,可靠性,以及可用性。...

    GFS+RHCS.doc

    GFS+RHCS

    Redhat集群和GFS培训

    Redhat集群和GFS培训

Global site tag (gtag.js) - Google Analytics