前言

前面学习了GFS(分布式存储系统),MapReduce(分布式数据处理)
接下来学习最后一个技术:分布式结构化数据表BigTable

谷歌技术"三宝"之BigTable
Google Bigtable 中文版

引进BigTable

GFS(2003年发表)使用商用硬件集群存储海量数据。文件系统将数据在节点之间冗余复制。MapReduce(2004)是GFS架构的一个补充,因为它能够充分利用GFS集群中所有低价服务器提供的大量CPU

但是两个系统都有一定的缺陷:

  • 两个系统都缺乏实时随机存取数据的能力,意味着尚不足以处理Web服务
  • GFS的另一个缺陷就是,它适合存储少许非常非常大的文件,而不适合存储成千数万的小文件,文件越多master的压力越大

考虑放弃关系型的特点,采用简单的API来进行增删改查操作,另加一个扫描函数,以在较大的键范围或全表上迭代扫描,最终形成一个管理结构化数据的分布式存储系统BigTable(2006)

GFS MapReduce BigTable关系

BigTable数据模型

BigTable是分布式多维映射表,是一个稀疏的、分布式的、持久化存储的多维度排序Map

持久化的意思很简单,Bigtable的数据最终会以文件的形式放到GFS,即可以长时间保存
Bigtable建立在GFS之上本身就意味着分布式

稀疏的意思是,一个表里不同的行,列可能完完全全不一样

Map

Map键值对,键有三维:行关键字、列关键字、时间戳
有四个属性:行关键字、列关键字、时间戳、值

行row

行键可以是任意字节串,通常有10-100字节。
行的读写都是原子性的。
Bigtable按照行键的字典序存储数据。

将网址作为行关键字
采用网址倒置(cn.com.sina.www):方便判断不同的行
可任意多行

Bigtable的表会根据行键自动划分为片(tablet),片是负载均衡的单元。最初表都只有一个片,但随着表不断增大,片会自动分裂,片的大小控制在100-200MB。行是表的第一级索引

列column

列是第二级索引,每行拥有的列是不受限制的,可以随时增加减少。
为了方便管理,列被分为多个列族(column family,是访问控制的单元),以列族:限定词的形式区分:“内容:”,“超链接:新闻”
可任意多列

时间戳

时间戳是第三级索引,用于处理版本更新
数据的不同版本按照时间戳降序存储,因此先读到的是最新版本的数据

t1,t2,t3就是时间戳

查询时,如果只给出行列,那么返回的是最新版本的数据;
如果给出了行列时间戳,那么返回的是时间小于或等于时间戳的数据(即该版本及以前的版本)

系统架构

BigTable包括三个主要部分:一个供客户端使用的库,一个主服务器(master server),许多片服务器\子表服务器(tablet server)

  • Tablet Server

BigTable将表按行分成片(tablet)
一个子表服务器负责一定量的片,处理对其片的读写请求,以及片的分裂或合并
片服务器可以根据负载随时添加和删除
片服务器并不真实存储数据,而相当于一个连接Bigtable和GFS的代理,客户端的一些数据操作都通过片服务器代理间接访问GFS

  • Master Server

主服务器负责将片分配给片服务器,监控片服务器的添加和删除,平衡片服务器的负载,处理表和列族的创建等。注意,主服务器不存储任何片,不提供任何数据服务,也不提供片的定位信息(与GFS不同)

  • 客户端

客户端需要读写数据时,直接与片服务器联系。因为客户端并不需要从主服务器获取片的位置信息,所以大多数客户端从来不需要访问主服务器,主服务器的负载一般很轻

Table的位置

既然Master Server不负责表的位置信息,那么表的位置在哪

通过阅读BigTable论文可以知道
以一个三层的、类似B+树的结构存储tablet
第一层,Chubby file。这一层是一个Chubby文件,它保存着root tablet的位置。这个Chubby文件属于Chubby服务的一部分,一旦Chubby不可用,就意味着丢失了root tablet的位置,整个Bigtable也就不可用了

第二层是root tablet。root tablet其实是元数据表(METADATA table)的第一个分片,它保存着元数据表其它片的位置,root table永远不会被分割,保证了Tablet的存储信息结构永远是三层

第三层是其它的元数据片,它们和root tablet一起组成完整的元数据表。每个元数据片都包含了许多用户片的位置信息。

位置及分配功能要彻底明白需要挺多知识点,暂时搞不懂,跳过

Tablet服务

BigTable最终片还是要保存在GFS中持久化


将片数据存入GFS:片在GFS里的物理形态就是若干个SSTable文件
下图展示了读写情况


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

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

每一次minor compaction都会产生一个新的SSTable文件,SSTable文件太多读操作的效率就降低了,所以Bigtable定期执行merging compaction操作,将几个SSTable和memtable合并为一个新的SSTable。BigTable还有个更厉害的叫major compaction,它将所有SSTable合并为一个新的SSTable。

云计算(1.3)Google云计算三大核心技术 - 分布式结构化数据表BigTable相关推荐

  1. 《云计算》学习笔记4——Google的云计算原理与应用(分布式结构化数据表BigTable)

    1.设计动机与目标 (1)设计动机 需要存储的数据种类繁多:Google目前向公众开放的服务很多,需要处理的数据类型也非常多.包括URL.网页内容.用户的个性化设置在内的数据都是Google需要经常处 ...

  2. Bigtable:结构化数据的分布式存储系统

    相关说明 Bigtable是一个用于管理结构化数据的分布式存储系统,其设计目的是为了通过数千个服务器管理大规模数据.谷歌许多的项目例如,web索引.谷歌地球和谷歌金融都使用了Bigtable来存储大规 ...

  3. 谷歌三大论文中文版之一:Bigtable:一个分布式的结构化数据存储系统

    修正了alex翻译版的几个欠妥之处 Bigtable:一个分布式的结构化数据存储系统 摘要 Bigtable是一个管理结构化数据的分布式存储系统,它被设计用来处理海量数据:分布在数千台通用服务器上的P ...

  4. 谷歌三大论文之--Bigtable:一个分布式的结构化数据存储系统

    Bigtable:一个分布式的结构化数据存储系统 译者:alex 摘要 Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据.Goo ...

  5. 网易马进:DDB从分布式数据库到结构化数据中心的架构变迁

    导语: 本文根据马进老师在2018年5月10日[第九届中国数据库技术大会(DTCC)]现场演讲内容整理而成. 马进 网易 DDB项目负责人 来自网易杭研大数据平台组,入职以来先后参与了分布式数据库DD ...

  6. Bigtable:一个分布式的结构化数据存储系统(转)

    为了方便部分博友和我自己,我特地将BigTable的中文版论文转载到本博客,原文地址在Google Labs,译者为alex. Wiki百科关于 BigTable的解释: http://en.wiki ...

  7. [翻译] Cassandra 分布式结构化存储系统

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  8. Bigtable:一个分布式的结构化数据存储系统

    Bigtable:一个分布式的结构化数据存储系统 本文的英文原文为Google在2006年发布的Google Bigtable paper 本文的翻译版本由Alex完成,原文地址为: http://b ...

  9. Google Webmaster Tools 结构化数据标记使用入门指南

    要想使自己的产品在Google搜索结果有一个好的排名,我们不仅可以在提高Google搜索排名上下功夫,也可以改善我们的产品在Google搜索结果页的结构化数据样式,这样就能够以更准确.更具吸引力的方式 ...

最新文章

  1. 隐私数据在隐私AI框架中的安全流动
  2. 斐波那契数列性质【记住】
  3. Java Web Token - JWT
  4. Elasticsearch 定制评分(自定义评分)
  5. 奥林匹克公园的《老北京四重奏》
  6. 【NLP_Stanford课堂】语言模型1
  7. C++ 多态性之虚函数抽象类纯虚函数
  8. 模板 - 计算几何(合集)
  9. linux服务器邮局,linux系统下安装postfix邮局服务器
  10. 又一款代替PanDownload的百度网盘不限速下载工具利器 – 雷鸟下载
  11. 01将乌班图系统安装到U盘,实现即插即用
  12. 免费下载微软原厂Win11镜像ISO文件
  13. 162天,从华为外包5k转岗正式员工15k,心酸只有自己知道
  14. JavaScript:实现PigeonHoleSort鸽巢排序算法(附完整源码)
  15. 打开win7任务管理器的六种方法
  16. 几何画板在教学中的常见应用
  17. linux自动刷新桌面,Ubuntu下实现用Python开机自动更新壁纸为bing壁纸
  18. 计算机毕业设计教学资源网站的设计与实现
  19. java+springboot影楼婚纱照预约系统ssm
  20. 《学籍信息管理系统》java+mysql+gui实现(全套免费代码+保姆教学+60页实验报告)

热门文章

  1. 模式识别与机器学习(1) 皮肤检测
  2. Apache Atlas2.0 第六节 血源关系
  3. 语法糖--这一篇全了解
  4. 风霄毅谈LinuxServer系列1-----常用命令序
  5. dnsmasq windows版_烂泥:dnsmasq搭建简易DNS服务器
  6. tiktok小店卖家入驻指南
  7. 人工智能ChatGPT 体验案例:使用ChatGPT实现java扫雷小游戏
  8. describe不要科学计数法
  9. appstore美元与人民币价格对照
  10. 简笔画教程——设计简宝玉+简黛玉(干货)