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 %sn",
       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
   ?

Big Table简介