BigTable学习笔记

 

BigTable论文学习笔记

1,Data model

BigTable是一个稀疏的、分布式的、持久化存储的多维度排序Map。Maprow keycolumn keytimestamp为索引,值一个byte数组。

Row key是任意字符串(最大64K),对于一个row key下的数据读写都是原子的。

Row key是以字典顺序排序的。表的Row range是被动态划分的。每一个row range都叫一个tablettablet是分布存储和负载均衡的最小单位。

有一定关联的Column key组成一个集合叫column family。在存储数据到表之前必须先定义column family。一个表中column family数量要尽可能的少,而且一旦建好就尽量不改动。一个column key用如下的语法声明:

Column family:qualifier

Column family必须是可打印的字符串,而qualifier可以是任意字符串。

Timestamps。相当于版本号,是一个64位的整数。Bigtable中的每一个值都有一个版本号,当新值覆盖旧值时,旧值不会删除,新值将有一个更新的时间戳。Bigtable每次读取时间戳最新的值。旧值是可以被bigtable垃圾回收的。

Hbase的结构与bigtable相同,在hbase里定义表时要指定表的column family,例如定义一个test表,它有一个column family叫“cf”,则用如下形式:

Create 'test','cf'

GoogleSSTable文件格式存储BigTable数据,它是键值对的集合。一个SSTable内部由一些block(一般是64K,可配置)组成,SSTable的最末端存有一个block index,是前面所有block的索引,当一个SSTable被打开时,这个索引就被加载到内存中。这样一个查询就可以由一次磁盘读操作完成,首先根据block index定位block,从磁盘中读出block后就可以遍便block中的键值对了。

 

Chubby

BigTable依赖于一个高可用性的、分布式的锁系统ChubbyChubby 相当于HBase中的zookeeperChubby服务由5个活动的冗余服务组成,其中有一个叫master。多数服务器处于活动状态且能相互通信,那么chubby服务就是有效的。一旦有服务器失败,那么chubbyPaxos算法保持各服务之间的一致性(zookeeper用的另外的算法)。Chubby中一个文件或目录就是一个锁,读写这些文件时都是原子操作。

每个Chubby客户端维持一个与服务器的会话。如果在规定时间内客户端不能重建与服务器的连接则Chubby客户端和服务器的会话失效。当会话失效时,客户端失去锁和句柄。客户端可以注册回调函数,当Chubby文件或目录有变动时可以通知客户端。

BigTable使用Chubby1)保证任何时刻只有一个有效master2)存储BigTable data引导程序的位置。3)发现tablet server,并判断tablet server是否有效。4)存储BigTable的模式信息(每一个tablecolumn family信息)。5)存储访问控制列表。

BigTable 实现

BigTable有三个组成部分:1)与每一个客户端连接的库(client library) 2)一个master server3)多个tablet serverTablet server可以动态添加到机群中。

Tablet 定位

Tablet是存储在三层B+树中的,第一层是root tablet,第二层是METADATA table,第三层是用户表。实际上第一层的root tablet就是METADATA table的第一个tablet,处在第二层的是METADATA表的其余的tabletRoot tablet存储METADATA表中tablet的位置,METADATAtablet则存储用户tablet的位置。

Tablet分配

Master是如何分配tablet 给一个tablet server的。BigTableChubby来追踪tablet servers.Tablet server启动时会在Chubby上创建一个不重名的目录并且申请得到目录的互斥锁,master通过监控这些目录来发现活动的tablet server.tablet server失去锁时,它停止为tablet服务.只要tablet serverchubby上的文件存在,它就试图重新获得锁,如果文件不存在,就杀死自己并且master会分配它管理的tablet到其它的tablet server.master会定期查看tablet server的状态,如果tablet server回复锁丢失或者master不能连通tablet server,master会试图得到tablet serverchubby上的文件的锁.master一旦获得了锁就意味着tablet server已经挂掉,master会重新分配它的tablet.master失去与chubby的联系,所有的tablet分布不会改变.

Master启动过程

master启动时先检查所有tablet的分布情况,然后才能修改它们.检查时将执行如下步骤:

1)获得chubby上的唯一的master lock

2)master扫描chubby上的server directory 来发现运行的server

3)master与每一个运行中的tablet server通信来获得所有已经分配给他们的tablet

4)master扫描METADATA table获得tablet集合的情况.一旦遇到未被分配的tablet,就把它加入到未分配tablet集合中,等待被分配.

以上都是读BigTable的笔记。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值