38
BigTable学习分享 李楠

Big Table简介

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Big Table简介

BigTable学习分享李楠

Page 2: Big Table简介

论文的主要内容 摘要 简介 数据模型 客户端API BigTable的底层数据结构 实现原理 改进策略 性能试验 设计结论 bigTable的支持 相关工作 结论

Page 3: Big Table简介

本次重点讲的几个部分

数据模型

底层数据结构

实现原理

改进策略

Page 4: Big Table简介

摘要

Page 5: Big Table简介

简介

Page 6: Big Table简介

数据模型

BigTable的数据模型

一个例子

Row

Column Family

Timestamps

Page 7: Big Table简介

数据模型

Page 8: Big Table简介

例子

Page 9: Big Table简介

例子

Page 10: Big Table简介

Row

Page 11: Big Table简介

Column Family

Page 12: Big Table简介

TimeStamps

Page 13: Big Table简介

客户端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() ); }

Page 14: Big Table简介

客户端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);

Page 15: Big Table简介

底层数据结构

上层用MapReduce进行计算

下层用GFS分布式文件系统存储日志和文件

通常和其他分布式程序部署在同一套集群环境中

用SSTable文件格式来存储Bigtable数据

依赖于高可用的分布式锁服务Chubby

Page 16: Big Table简介

用SSTable文件格式来存储Bigtable数据

Page 17: Big Table简介

依赖于高可用的分布式锁服务

Chubby

Page 18: Big Table简介

来看一个Hbase的大的框架

Page 19: Big Table简介

Hbase上的map reduce

Page 20: Big Table简介

Hbase的详细架构图

Page 21: Big Table简介

对比定义

MapReduce => Hadoop

GFS => HDFS

BigTable => Hbase

Chubby => ZooKeeper

SSTable => Hfile

Row ColumnFamily Timestamp的概念一样

Page 22: Big Table简介

实现原理

系统的三个部分

Master的功能

Tablet server的功能

Client与big table的交互问题

Tablet location

Tablet assignment

Tablet serving

compactions

Page 23: Big Table简介

系统的三个部分

client library

master server

many tablet servers(可以动态增加)

Page 24: Big Table简介

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

Page 25: Big Table简介

tablet server的功能

管理一系列tablet, 10~1000个

handle read and write requst to the tablets

splits tablets that have grown too large

Page 26: Big Table简介

client 与 Bitable的交互问题

数据读写,并不经过master(定位是在chubby做的)

master更多承担维持Bigtable均衡负载的角色

master系统资源消耗一般都很少

Page 27: Big Table简介

tablet location

Page 28: Big Table简介

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信息,但具体没看懂

Page 29: Big Table简介

看一个Hbase的location

Tablet =》Region

Tablet Server => Region Server

Page 30: Big Table简介

tablet assignment

Page 31: Big Table简介

table serving

Page 32: Big Table简介

table serving

Page 33: Big Table简介

对一下Hbase的log部分

Page 34: Big Table简介

compactions

Page 35: Big Table简介

Hbase的分裂和收缩

Page 36: Big Table简介

改进策略

Page 37: Big Table简介

其他

BigTable网上有很多中文翻译,可以适当的参见一下:

http://zhiyuzhe.blog.163.com/blog/static/1100540742010811105951381/

Page 38: Big Table简介

Q&A

?