《云计算(第三版)》第2章_Google云计算原理与应用(二)全解.ppt

《云计算(第三版)》第2章_Google云计算原理与应用(二)全解.ppt

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《云计算(第三版)》第2章_Google云计算原理与应用(二)全解

2.4 分布式结构化数据表Bigtable 2.4.1 设计动机与目标 2.4.2 数据模型 2.4.3 系统架构 2.4.4 主服务器 2.4.5 子表服务器 2.4.6 性能优化 SSTable及子表基本结构 ?SSTable是Google为Bigtable设计的内部数据存储格式。所有的SSTable文件都存储在GFS上 SSTable结构 子表实际组成 ?每个子表都是由多个SSTable以及日志(Log)文件构成 ?不同子表的SSTable可以共享 ?SSTable中数据被划分成一个个的块(Block),每个块的大小是可以设置的,一般为64KB ?在SSTable的结尾有一个索引(Index),这个索引保存了块的位置信息,在SSTable打开时这个索引会被加载进内存,用户在查找某个块时首先在内存中查找块的位置信息,然后在硬盘上直接找到这个块 ?由于每个SSTable一般都不是很大,用户还可以选择将其整体加载进内存,这样查找起来会更快 Bigtable中的日志文件是一种共享日志,每个子表服务器上仅保存一个日志文件,某个子表日志只是这个共享日志的一个片段。这样会节省大量的空间,但在恢复时却有一定的难度 Google为了避免这种情况出现,对日志做了一些改进。Bigtable规定将日志的内容按照键值进行排序,这样不同的子表服务器都可以连续读取日志文件了 ?一般来说每个子表的大小在100MB到200MB之间。每个子表服务器上保存的子表数量可以从几十到上千不等,通常情况下是100个左右 * 64KB 块 64KB 块 … SSTable 索引 SSTable 格式的基本示意 2.4 分布式结构化数据表Bigtable SSTable是Google为Bigtable设计的内部数据存储格式。所有的SSTable文件都存储在GFS上,用户可以通过键来查询相应的值。 * 子表实际组成 日志 64KB 块 64KB 块 … SSTable 索引 64KB 块 64KB 块 … SSTable 索引 … 2.4 分布式结构化数据表Bigtable 不同子表的SSTable可以共享 每个子表服务器上仅保存一个日志文件 Bigtable规定将日志的内容按照键值进行排序 每个子表服务器上保存的子表数量可以从几十到上千不等,通常情况下是100个左右 * Chubby文件 根子表 (元数据表中第一条记录) … … … … … … 用户表1 用户表N 其他元数据子表 · · · · · · 子表地址组成 2.4 分布式结构化数据表Bigtable … … · · · 子表地址的查询是经常碰到的操作。在Bigtable系统的内部采用的是一种类似B+树的三层查询体系 ?所有子表地址都被记录在元数据表中,元数据表也是由一个个的元数据子表(Metadata tablet)组成 ?根子表是元数据表中一个比较特殊的子表,它既是元数据表的第一条记录,也包含了其他元数据子表的地址,同时Chubby中的一个文件也存储了这个根子表的信息。 ?查询时,首先从Chubby中提取这个根子表的地址,进而读取所需的元数据子表的位置,最后就可以从元数据子表中找到待查询的子表。除了这些子表的元数据之外,元数据表中还保存了其他一些有利于调试和分析的信息,比如事件日志等 ?为了减少访问开销,提高客户访问效率,Bigtable使用了缓存(Cache)和预取(Prefetch)技术 ?子表的地址信息被缓存在客户端,客户在寻址时直接根据缓存信息进行查找。一旦出现缓存为空或缓存信息过时的情况,客户端就需要按照图示方式进行网络的来回通信(Network Round-trips)进行寻址,在缓存为空的情况下需要三个网络来回通信。如果缓存的信息是过时的,则需要六个网络来回通信。其中三个用来确定信息是过时的,另外三个获取新的地址 ?预取则是在每次访问元数据表时不仅仅读取所需的子表元数据,而是读取多个子表的元数据,这样下次需要时就不用再次访问元数据表 子表数据存储及读/写操作 Bigtable数据存储及读/写操作 ?Bigtable将数据存储划分成两块:较新的数据存储在内存中一个称为内存表(Memtable)的有序缓冲里,较早的数据则以SSTable格式保存在GFS中 ?写操作(Write Op)——先查询Chubby中保存的访问控制列表确定用户具相应写权限,通过认证之后写入的数据首先被保存在提交日志(Commit Log)中。提交日志中以重做记录(Redo Record)的形式保存着最近的一系列数据更改,这些重做记录在子表进行恢复时可以向系统提供已完成的更改信息。 ?读操作(Read Op)——先通过认证,之后读操作就要结合内存表

文档评论(0)

1520520 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档