云计算(1.3)Google云计算三大核心技术 - 分布式结构化数据表BigTable
前言
前面学习了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相关推荐
- 《云计算》学习笔记4——Google的云计算原理与应用(分布式结构化数据表BigTable)
1.设计动机与目标 (1)设计动机 需要存储的数据种类繁多:Google目前向公众开放的服务很多,需要处理的数据类型也非常多.包括URL.网页内容.用户的个性化设置在内的数据都是Google需要经常处 ...
- Bigtable:结构化数据的分布式存储系统
相关说明 Bigtable是一个用于管理结构化数据的分布式存储系统,其设计目的是为了通过数千个服务器管理大规模数据.谷歌许多的项目例如,web索引.谷歌地球和谷歌金融都使用了Bigtable来存储大规 ...
- 谷歌三大论文中文版之一:Bigtable:一个分布式的结构化数据存储系统
修正了alex翻译版的几个欠妥之处 Bigtable:一个分布式的结构化数据存储系统 摘要 Bigtable是一个管理结构化数据的分布式存储系统,它被设计用来处理海量数据:分布在数千台通用服务器上的P ...
- 谷歌三大论文之--Bigtable:一个分布式的结构化数据存储系统
Bigtable:一个分布式的结构化数据存储系统 译者:alex 摘要 Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据.Goo ...
- 网易马进:DDB从分布式数据库到结构化数据中心的架构变迁
导语: 本文根据马进老师在2018年5月10日[第九届中国数据库技术大会(DTCC)]现场演讲内容整理而成. 马进 网易 DDB项目负责人 来自网易杭研大数据平台组,入职以来先后参与了分布式数据库DD ...
- Bigtable:一个分布式的结构化数据存储系统(转)
为了方便部分博友和我自己,我特地将BigTable的中文版论文转载到本博客,原文地址在Google Labs,译者为alex. Wiki百科关于 BigTable的解释: http://en.wiki ...
- [翻译] Cassandra 分布式结构化存储系统
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- Bigtable:一个分布式的结构化数据存储系统
Bigtable:一个分布式的结构化数据存储系统 本文的英文原文为Google在2006年发布的Google Bigtable paper 本文的翻译版本由Alex完成,原文地址为: http://b ...
- Google Webmaster Tools 结构化数据标记使用入门指南
要想使自己的产品在Google搜索结果有一个好的排名,我们不仅可以在提高Google搜索排名上下功夫,也可以改善我们的产品在Google搜索结果页的结构化数据样式,这样就能够以更准确.更具吸引力的方式 ...
最新文章
- 隐私数据在隐私AI框架中的安全流动
- 斐波那契数列性质【记住】
- Java Web Token - JWT
- Elasticsearch 定制评分(自定义评分)
- 奥林匹克公园的《老北京四重奏》
- 【NLP_Stanford课堂】语言模型1
- C++ 多态性之虚函数抽象类纯虚函数
- 模板 - 计算几何(合集)
- linux服务器邮局,linux系统下安装postfix邮局服务器
- 又一款代替PanDownload的百度网盘不限速下载工具利器 – 雷鸟下载
- 01将乌班图系统安装到U盘,实现即插即用
- 免费下载微软原厂Win11镜像ISO文件
- 162天,从华为外包5k转岗正式员工15k,心酸只有自己知道
- JavaScript:实现PigeonHoleSort鸽巢排序算法(附完整源码)
- 打开win7任务管理器的六种方法
- 几何画板在教学中的常见应用
- linux自动刷新桌面,Ubuntu下实现用Python开机自动更新壁纸为bing壁纸
- 计算机毕业设计教学资源网站的设计与实现
- java+springboot影楼婚纱照预约系统ssm
- 《学籍信息管理系统》java+mysql+gui实现(全套免费代码+保姆教学+60页实验报告)