big table简介

Post on 15-Jan-2015

1.058 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

?

top related