Big Table

作者: 谭英智 | 来源:发表于2021-03-21 15:29 被阅读0次

Big table是一个稀疏、分布式、持久化的key/value数据库

它通过rowid、col和timestamp来定位一条记录

(row:string, column:string, time:int64) → string

value是一个没有类型的字节数组

行row key

big table通过row key的字典序来组织数据,数据被分成一个个小的tablet,每个tablet管理自己的row key对应的数据。

当客户端发起一个通过row key的查询,客户端有可能需要先查询row key对应的tablet服务器,然后在这个tablet中查找对应的value

列族

每个table有列,列族是列的组,不同列族的数据被存储在不同的文件。

时间戳

每个value都有一个时间戳,big table可以通过配置仅保留n个最近的记录。

一般来说获取value,会取时间戳最大的一条记录

时间戳可以通过tablet服务器或者客户端来设置。如果通过客户端来设置,有可能会带来设置的时间戳小于最大的时间戳,导致设置无效

组件

SSTable

SSTable是一个持久化、排序的块,存储在GFS上,保存着big table的key/value的数据。SSTable为了加快检索,会在块的结尾保存着一个对块的索引,当发生检索时,先加载索引,判断key是否在块内,如果存在,再加载整个SSTable来查询。

Chubby

类似于Zookeeper的一个高可用、持久化的一致性分布式锁服务。

Chubby使用Paxos算法来保证数据的一致性。

big table使用Chubby实现以下功能:

  • 保证集群中只有一个master
  • 保存big table数据的bootstrap的位置
  • 发现tablet服务器和和宣布tablet服务器死亡
  • 存储每个表的列族信息

如果Chubby变得不可用

big table也会变得不可用

实现细节

Master服务

  • 分配tablet
  • 检测table服务的增加、删除和负载均衡
  • GFS文件的垃圾回收
  • 处理schema的变化,如表和列族的创建

定位Tablet位置

bt-tabletloc
  • chubby存储着root tablet的位置
  • root tablet保存着元数据,是一个稀疏索引,每个元素指向另外一个meta data tablet的位置,root tablet不会裂变
  • meta tablet存放着某一row key范围的tablet的位置
  • 客户端会缓存meta的信息,如果在范围数据时发现不一致,会更新meta数据,再发起操作

Tablet的分配

  • 每个Tablet只会分配到一个tablet服务器,tablet服务器会再chubby中创建一个排他锁,master会监听这个排他锁,一旦这个锁的状态发生释放,master会重新分配一个tablet服务器接替死掉的服务器
  • master启动的时候也会向chubby申请一个锁,master会扫描Chubby的目录来确定哪些tablet已经分配出去了,再对比元数据,把没有分配出去的tablet进行分配
  • 如果tablet启动的时候发现Chubby对应自己的目录已经存在,则会自动退出
  • 由于网络原因,tablet服务器进行tablet分裂的时候,暂时没办法通知master。在往后一点的时间,当网络回归正常,tablet服务器会把分割的信息通知master,master会对比元素据,发现不一致会进行元数据的修正

Tablet服务

bt-tabletser

使用LSM的结构来组织数据,并提供服务。

在写入LSM的内存数据时,会同时写入log。一旦机器崩溃,可以使用log来恢复内存中的数据

LRU

tablet中保存着LRU cache,来提高读性能

布隆过滤器

tablet的内存中,保持着每个SSTable的布隆过滤器,可以快速的判断key是否在SSTable中

Copy-on-write

对memtable进行读写时,为了减少读的冲突,使用copy-on-write的技术来允许读写操作并行执行

相关文章

  • Big Table

    Bigtable Bigtable 是一个用于管理结构化数据的分布式存储系统,它有非常优秀的扩展性,可以同时处理上...

  • Big Table

    No SQL database Big Table (Google) Hbase (Yahoo) Cassandr...

  • Big Table

    Big table是一个稀疏、分布式、持久化的key/value数据库 它通过rowid、col和timestam...

  • OTS起步

    特性 Wide Column = Column Family => Big Table OLAP => Big Q...

  • 595. Big Countries

    There is a table World A country is big if it has an area...

  • leetcode 595. Big Countries(mysq

    There is a table World A country is big if it has an area...

  • Notes on Big Table

    Bigtable: A Distributed Storage System for Structured Dat...

  • LeetCode 595. Big Countries

    LeetCode 595. Big Countries 题目 There is a table World A c...

  • Flink

    Google File System Big Table Map Reduce HDFS HBase Hadoop...

  • TinyPerson_v2

    Big table GPU: 3080 x2train set: train + val; eval set: t...

网友评论

      本文标题:Big Table

      本文链接:https://www.haomeiwen.com/subject/bhancltx.html