0%

Bigtable

Bigtable

Google Bigtable采用双层结构,底层使用GFS作为持久化存储层,Hadoop就是模仿的这种模式,Hbase这门技术就是来源于bigtable,后续会看一下Hbase

Bigtable系统由很多表格组成,每个表格包含很多行,每行通过一个主键(Row Key)唯一标识,每行又包含很多列,某一行的某一列构成一个单元格(Cell),每个单元格包含多个版本的数据

整体格式如下

1
(row:string, column:string, timestamp:int64) -> string

Bigtable将多个列组织成列族(column family),这样,列名由两个部分组成(column family,qualifier)。列族是Bigtable中访问控制的基本单元,在创建表格时需要预先定义好列族,每个列族包含哪些qualifier是不需要预先定义的,Bigtable中的数据按照行主键进行排序

构成

Bigtable构建在GFS上,为文件系统增加了一层分布式索引层,并依赖于Google的Chubby(分布式锁服务)进行服务器选举及全局信息服务

Bigtable将大表分为一个个的子表(tablet),每个子表对应一个连续的数据范围。Bigtable主要有三部分组成

  • 客户端 提供Bigtable到应用程序的接口
  • 主控服务器(Master) 管理所有的子表服务器,包括分配子表给子表服务器,指导子表服务器实现子表的合并,接收来自子表服务器的子表分裂消息,监控子表服务器,在子表服务器之间进行负载均衡并实现子表服务器的故障恢复等
  • 多个子表服务器(Tablet Server) 实现子表的装载/卸出、表格内容的读和写,子表的合并和分裂,Tablet Server服务的数据包括操作日志以及每个子表上的sstable数据,这些数据存储在底层的GFS中

Bigtable包含三种类型的表格:用户表(User Table)、元数据表(Meta Table)和根表(Root Table),其中用户表存储实际数据;元数据表存储用户表的元数据,如子表位置信息、SSTable及操作日志文件编号、日志回放点等;根表用来存储元数据表的元数据

欢迎关注我的其它发布渠道