Google三驾马车-Bigtable-论文笔记

原创 2018年04月16日 17:54:12


什么是Bigtable

相比于传统的关系型数据库,bigtable 提供了分布式的非结构化的数 据存储,但没有提供sql的语义,所以是数据NoSQL的数据库。

事实上它还是一个分布式的多层map的存储的结构

Building Blocks

在bigtable 用了其他的很多的Google的组件。

  • 使用Google分布式文件系统(GFS)存储日志和数据文件。
  • BigTable还依赖一个高可用的、持久化的分布式锁服务组件,叫做Chubby。用于选举master
  • 一般会运行在共享的集群中,依赖于共享集群的任务调度。

Data model

在bigtable 中,还是提供了类似于表的的数据结构,会有数据的row 和colum, 和一般的不同的是,每一个行的列是可以不同的,列的数量也是可以不一致的。对于数据的查找,需要先找到对应的一行,然后再去找这一行中的某一列。同时数据还会有不同版本的相关的信息。

(row:string, column:string, time:int64) → string

如下面的例子,可以通过(com.cnn.www,anchor:cnnsi.com,t9)来找到CNN。t9是版本,是根据timestamp来构造的。

15236080017543.jpg

SSTable

BigTable数据在内部使用google SSTable文件格式存储。SSTable提供一个从键(key)到值(value)的持久化的、已排序、不可更改的映射(Map),这里的key和value 的都是任意的字节(Byte)串。对SSTable提供了如下操作:查询与一个指定key值相关的value,或者遍历指定key值范围内的所有键值对。从内部看,SSTable是一连串的数据块(通常每个块的大小是64KB,但是这个大小是可以配置的)。SSTable 会使用索引来加速查找,索引一般存储在数据的末尾位置。如图:15238544902241.jpg

Tablet

Tablet 是包含了一个表中多行,一个tablet事实上是存储在一个机器上的一块信息。

15238545943203.jpg

其次,对于一个table来说,可能会分为多个tablet,而tablet又是由不同的sstable组成的,多个tablet可以共享一个sstable

对于tablet 的查找,使用的是类似于文件系统的多级的索引结构:

15238546947751.jpg

使用一个三层的、类似于B+树[10]的结构存储tablet的位置信息。其中第一层是存储在chubby file的中,也就是分布式锁的系统。客户程序库会缓存tablet的位置信息。如果客户程序不知道一个tablet的位置信息,或者发现它缓存的地址信息不正确,那么客户程序就递归移动到tablet位置层次;如果客户端缓存是空的,那么寻址算法需要通过三次网络来回通信寻址,这其中包括了一次Chubby读操作。如果客户端缓存的地址信息过期了,那么寻址算法可能进行多达6次(alex注:其中的三次通信发现缓存过期,另外三次更新缓存数据)网络来回通信,因为过期缓存条目只有在没有查到数据(upon misses)的时候才能发现 (假设元数据tablet没有被频繁的移动)。。为了减少开销,会于读取多个的tablet 一次

基本的服务

Bigtable集群包括三个主要部分:一个供客户端使用的库,一个主服务器(master server),许多片服务器(tablet server)。

每个tablet一次分配给一个tablet服务器。master服务器记录活跃的tablet服务器、当前tablet到tablet服务器的分配、包括哪些tablet还没有被分配。一个tablet 服务器管理着多个tablet。

客户端的操作都是bypass master的

读写操作

当片服务器收到一个写请求,片服务器首先检查请求是否合法。如果合法,先将写请求提交到日志去,然后将数据写入内存中的memtable。memtable相当于SSTable的缓存,当memtable成长到一定规模会被冻结,Bigtable随之创建一个新的memtable,并且将冻结的memtable转换为SSTable格式写入GFS,这个操作称为minor compaction。

15238556495043.jpg

当片服务器收到一个读请求,同样要检查请求是否合法。如果合法,这个读操作会查看所有SSTable文件和memtable的合并视图,因为SSTable和memtable本身都是已排序的,所以合并相当快。



















Google三驾马车论文

from http://blog.bizcloudsoft.com/?p=292 Google的著名的三篇大数据的论文,分别讲述GFS、MapReduce、BigTable,取自网上,排版整理完成,...
  • longxibendi
  • longxibendi
  • 2016-04-30 22:00:10
  • 2048

Google后Hadoop时代的新“三驾马车”——Caffeine、Pregel、Dreme

  • 2013年12月24日 20:05
  • 2.75MB
  • 下载

Google File System(google三驾马车)

Google文件系统 GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。 ...
  • WitsMakeMen
  • WitsMakeMen
  • 2012-12-10 20:19:29
  • 1541

Google三驾马车——GFS、MapReduce、Bigtable

 1、GFS GFS的一些假设: 系统由许多廉价的普通组件组成,组件失效是一种常态。 统的工作负载主要由两种读操作组成:大规模的流式读取和小规模的随机读取。 ...
  • mmc2015
  • mmc2015
  • 2014-10-05 15:58:44
  • 2506

成功大数据团队的“三驾马车”

作者:张霖 星期五, 一月 3, 2014 动态, 大数据 暂无评论 对于那些着手尝试大数据应用的企业来说,成败的关键是组建一个优秀的大数据团队,但是不要指望一个“首席...
  • wangshfa
  • wangshfa
  • 2014-10-30 15:40:34
  • 1037

谷歌三驾马车中文版 google file system+mapreduce+bigtable中文版

  • 2013年02月26日 11:23
  • 1.74MB
  • 下载

深度学习三驾马车首次同台,“打情骂俏”展望未来

昨天,在 2017 RE•WORK 蒙特利尔深度学习峰会上众星云集,最受瞩目的还是深度学习三驾马车—Yoshua Bengio、Yann LeCun和Geoffrey Hinton首次同时出现在统一活...
  • gh13uy2ql0N5
  • gh13uy2ql0N5
  • 2017-10-13 00:00:00
  • 681

Google's BigTable 原理(google三驾马车)

Google's BigTable 原理 (翻译)    题记:google 的成功除了一个个出色的创意外,还因为有 Jeff Dean 这样的软件架构天才。                   ...
  • WitsMakeMen
  • WitsMakeMen
  • 2012-12-10 20:20:48
  • 1069

Google三驾马车:GFS、MapReduce和Bigtable

MapReduce、GFS和BigTable的论文都已经被翻译成高质量的中文,  为了方便大家整理,我把三篇论文的地址统一列在这里: MapReduce: http://blog.csdn.ne...
  • yimingsilence
  • yimingsilence
  • 2017-10-14 19:31:27
  • 328

微管理:给你一个技术团队,你该怎么管札记-高效团队的三驾马车

1.书中一句话“不得不腹诽一下自己的井蛙之见”,查了一下腹诽的意思是“内心不满,却不说出来”,我觉得作序的人这个词用的十分的有问题。 2.开发团队包括靠谱的人、过程体系(每太弄明白)、技术与工具。 3...
  • qing_gee
  • qing_gee
  • 2015-01-21 18:16:00
  • 944
收藏助手
不良信息举报
您举报文章:Google三驾马车-Bigtable-论文笔记
举报原因:
原因补充:

(最多只允许输入30个字)