bigtable google 论文阅读

结构化数据的分布式存储系统 bigtable

摘要:

bigtable在google公司内部的多种应用场景,无论是大数据规模,还是实时性高的场景,都能灵活的提供解决方案。应对的是PB级别以上的数据。下面介绍具体的bigtable架构

 

1.introduction:

将bigtable与数据库进行比较,有很多实现策略都很相似。并行数据库和主存数据库都实现了扩展性和高性能。不同的是,bigtable与数据库的接口不同,不提供一个完全的关系数据模型,相反它提供给用户对数据结构和格式的动态控制。而且bigtable可以让用户决定是从磁盘中还是内存中存放数据,以及数据存放的物理位置(应该是机架)。

第二节描述数据模型的细节,第三节提供用户api,第四节描述bigtable以来的google底层框架,第五节描述bigtable实现的基本原理。第六节为可以对bigtable做出的优化。之后几节与技术关系不大,就省略不看

 

2.data model

bigtable是一个松散的,分布的,一致的多维排序的字典。a按照行key,列key,时间戳进行索引。每个值为raw string。

文中举了一个webpage的例子。

 

 

 

 

 

rowrange tablet 相近的row所在的机器也相近,webpage,html倒过来,相似的网页存放在一起。

column family ,access control,

timestamp 每个cell不同version由新到旧排列。可以进行垃圾回收

 

3.API

基本读写,原子性修改一行,与sawzell,mapreduce的互动

 

4.building blocks

bigtable基于google已有的基础框架搭建,其中,GFS用来存储日志和数据文件。bigtable通常是在机器共享池中与其他很多分布式应用一起运行。bigtable内部使用google sstable来存储数据,它提供持久化,排序的不可变的kv map(leveldb中sstable),允许查找一个key,也可以range query。

bigtable还依赖于高可用性和持久化的分布式锁chubby(比zookeeper更简单,但扩展性差。基本上是分布式小文件系统+rpc+paxos)。

 

5.implementation

基本由三个组件构成,client lib,master server,多个tablet server。tablet server可以动态添加,是扩展性的保证。

master的任务很繁重,包括管理tablet和tablet server的映射,tablet server的负载均衡,垃圾回收,tablet的动态添加和删除。

而tablet server负责响应具体的读写请求,以及tablet server过大时进行分支。

这种单master的分布式系统,很多时候client并不需要与master进行通讯(本地缓存等),所以master的负载并不高。

tablet location为b+树结构,减少了磁盘访问次数。

 

tablet server是用chubby的文件系统来管理的。

master为了监控tablet server的状态,需要不断与她们通信,如果tablet server停止服务,需要转移其上的tablet。

master在执行tablet assignment时如下:

1.在chubby获取一个唯一锁,防止并行master同时操作

2.master在server目录扫描寻找live的server

3.master扫描所有live的 tablet server,确认他们现在tablet的对应状态

4.master扫描元数据表了解tablet的集合(如果由未assigned的tablet,也加入到待完成队列中)

 

一个持久化状态的tablet被存储在GFS中,

 

读写的时候会进行权限检查,而权限检查一般是用chubby file实现,这个file一般都会在client 的cache被击中。

compaction,这类似于leveldb的LSM结构,从memtable到多级sstable。

 

6.refinement

基于之前一节的实现细节,有以下优化方向:

1.locality groups

多个column family合并为一个locality groups(类似webpage中,元数据在一个locality group,网页内容在一个locality groups),而不同的locality group在不同的sstable中。同时可以指定locality group在内存中还是在磁盘中进一步优化读写性能。

2.compression

sstable部分压缩,读取的时候不用解压缩整个文件。

3.cache for read performance

tablet server提供两级缓存,blockcache缓存sstable中的block,scancache缓存kv对。

4.布隆过滤器

类似于leveldb中的filter(metablock),在bigtable中变成了可配置的。

5.commit-log implementation

排序读操作,是磁盘随机读取变为顺序读取。排序用的归并排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值