google论文2-google文件系统(中).doc.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
google论文2-google文件系统(中).doc.doc

【google论文二】Google文件系统(中)?? 2010-10-01 17:12:11|??分类: 搜索与分布式 |??标签:client??主副本??副本??master??chunkserver?? |字号大中小?订阅 ? 转载请注明:/blog/static/7097176720109151211526/?作者 phylips@bmy 3.系统交互 我们是以尽量最小化master在所有操作中的参与度来设计系统的。在这个背景下,我们现在描述下client,master以及chunkserver如何交互来实现数据变更,记录append以及快照的。? 3.1租约和变更顺序 一个变更是指一个改变chunk的内容或者元信息的操作,比如写操作或者append操作。每个变更都需要在所有的副本上执行。我们使用租约来保持多个副本间变更顺序的一致性。Master授权给其中的一个副本一个该chunk的租约,我们把它叫做主副本。这个主副本为针对该chunk的所有变更的选择一个执行顺序,然后所有的副本根据这个顺序执行变更。因此,全局的变更顺序首先是由master选择的租约授权顺序来确定的(可能有多个chunk需要进行修改),而同一个租约内的变更顺序则是由那个主副本来定义的。? 租约机制是为了最小化master的管理开销而设计的。一个租约有一个初始化为60s的超时时间设置。然而只要这个chunk正在变更,那个主副本就可以向master请求延长租约。这些请求和授权通常是与master和chunkserver间的心跳信息一起发送的。有时候master可能想在租约过期前撤销它(比如,master可能想使对一个正在重命名的文件的变更无效)。即使master无法与主副本进行通信,它也可以在旧的租约过期后安全的将租约授权给另一个新的副本。? 如图2,我们将用如下的数字标识的步骤来表示一个写操作的控制流程。 ? 1.client向master询问那个chunkserver获取了当前chunk的租约以及其他副本所在的位置。如果没有人得到租约,master将租约授权给它选择的一个副本。 2.master返回该主副本的标识符以及其他副本的位置。Client为未来的变更缓存这个数据。只有当主副本没有响应或者租约到期时它才需要与master联系。 3.client将数据推送给所有的副本,client可以以任意的顺序进行推送。每个chunkserver会将数据存放在内部的LRU buffer里,直到数据被使用或者过期。通过将控制流与数据流分离,我们可以通过将昂贵的数据流基于网络拓扑进行调度来提高性能,而不用考虑哪个chunkserver是主副本。3.2节更深入地讨论了这点。 4.一旦所有的副本接受到了数据,client发送一个写请求给主副本,这个请求标识了先前推送给所有副本的数据。主副本会给它收到的所有变更(可能来自多个client)安排一个连续的序列号来进行必需的串行化。它将这些变更根据序列号应用在本地副本上。 5.主副本将写请求发送给所有的次副本,每个次副本以与主副本相同的串行化顺序应用这些变更。 6.所有的次副本完成操作后向主副本返回应答 7.主副本向client返回应答。任何副本碰到的错误都会返回给client。出现错误时,该写操作可能已经在主副本以及一部分次副本上执行成功。(如果主副本失败,那么它不会安排一个序列号并且发送给其他人)。客户端请求将会被认为是失败的,被修改的区域将会处在非一致状态下。我们的客户端代码会通过重试变更来处理这样的错误。它会首先在3-7步骤间进行一些尝试后在重新从头重试这个写操作。 如果应用程序的一个写操作很大或者跨越了chunk的边界,GFS client代码会将它转化为多个写操作。它们都会遵循上面的控制流程,但是可能会被来自其他client的操作插入或者覆盖。因此共享的文件区域可能会包含来自不同client的片段,虽然这些副本是一致的,因为所有的操作都按照相同的顺序在所有副本上执行成功了。但是文件区域会处在一种一致但是未定义的状态,正如2.7节描述的那样。 ?3.2数据流 为了更有效的使用网络我们将数据流和控制流分离。控制流从client到达主副本,然后到达其他的所有次副本,而数据则是线性地通过一个仔细选择的chunkserver链像流水线那样推送过去的。我们的目标是充分利用每个机器的网络带宽,避免网络瓶颈和高延时链路,最小化数据推送的延时。 ?为了充分利用每个机器的网络带宽,数据通过chunkserver链线性的推送过去而不是以其他的拓扑进行分布比如树型。因此每个机器的带宽可以全部用来发送数据而不是为多个接受者进行切分。 ?为了尽可能的避免网络瓶颈和高延时链路,每个机器向网络中还没有收到该数据的最近的那个机器推送数据

文档评论(0)

xinshengwencai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档