Upload
alihbase
View
1.058
Download
6
Embed Size (px)
DESCRIPTION
Citation preview
BigTable学习分享李楠
论文的主要内容 摘要 简介 数据模型 客户端API BigTable的底层数据结构 实现原理 改进策略 性能试验 设计结论 bigTable的支持 相关工作 结论
本次重点讲的几个部分
数据模型
底层数据结构
实现原理
改进策略
摘要
简介
数据模型
BigTable的数据模型
一个例子
Row
Column Family
Timestamps
数据模型
例子
例子
Row
Column Family
TimeStamps
客户端API(read的例子) Scanner scanner(T); Scanner * stream; stream = scanner.FetchColumnFamily("anchor"); stream->SetReturnAllVersions(); scanner.Lookup("com.cnn.www"); for(; !stream->Done(); stream->next()){ printf("%s %s %lld %s\n", scanner.RowName(), stream->ColumnName(), stream->MicorTimestamp(), stream->Value() ); }
客户端API(write的例子)
//Open the table
Table * T = OpenOrDie("/bigtable/web/webtable");
//Write a new anchor and delete an old anchor
RowMutation r1(T, "com.cnn.www");
r1.Set("anchor:www.c-span.org", "CNN");
r1.Delete("anchor:www.abc.com");
Operation op;
Apply(&op, &r1);
底层数据结构
上层用MapReduce进行计算
下层用GFS分布式文件系统存储日志和文件
通常和其他分布式程序部署在同一套集群环境中
用SSTable文件格式来存储Bigtable数据
依赖于高可用的分布式锁服务Chubby
用SSTable文件格式来存储Bigtable数据
依赖于高可用的分布式锁服务
Chubby
来看一个Hbase的大的框架
Hbase上的map reduce
Hbase的详细架构图
对比定义
MapReduce => Hadoop
GFS => HDFS
BigTable => Hbase
Chubby => ZooKeeper
SSTable => Hfile
Row ColumnFamily Timestamp的概念一样
实现原理
系统的三个部分
Master的功能
Tablet server的功能
Client与big table的交互问题
Tablet location
Tablet assignment
Tablet serving
compactions
系统的三个部分
client library
master server
many tablet servers(可以动态增加)
master的功能 assign tablets to table servers(负载均衡)
detecting the addition and expiration of table server
(table server的动态增减)
balancing the tablet-server load
garbage collection of files in GFS(不知道具体指什么)
handle schema changes such as table and column faimily creations
tablet server的功能
管理一系列tablet, 10~1000个
handle read and write requst to the tablets
splits tablets that have grown too large
client 与 Bitable的交互问题
数据读写,并不经过master(定位是在chubby做的)
master更多承担维持Bigtable均衡负载的角色
master系统资源消耗一般都很少
tablet location
Tablet location 用一个类似于B+树的三层结构,来存储tablet定位信息
chubby file => root tablet => meta tablet => user tablet
root tablet 不分裂,因此保持三层结构不会变成四层、五层、六层……
metadata table 存储的也是key/value对
◦ key 是 一个tablet 的table 标石和talet的尾部标记
◦ value是tablet的位置信息
◦ 一个meta 行大概1kb内存数据
128MB metadata tablets, is sufficient to address 2^34 tablets
客户端会cache tablet location信息,但具体没看懂
看一个Hbase的location
Tablet =》Region
Tablet Server => Region Server
tablet assignment
table serving
table serving
对一下Hbase的log部分
compactions
Hbase的分裂和收缩
改进策略
其他
BigTable网上有很多中文翻译,可以适当的参见一下:
http://zhiyuzhe.blog.163.com/blog/static/1100540742010811105951381/
Q&A
?