Hbase-01-体系结构与数据模型概述

1. 简介

BigTable论文中称BigTable为"sparse,distributed, persistent multidimensional sorted map"可见BigTable本质上是一个Map结构数据库,HBase亦然,也是由一系列KV构成的。然而HBase这个Map系统却并不简单,有很多限定词——稀疏的、分布式的、持久性的、多维的以及排序的。

  • 多维:

      HBase中的Map与普通Map最大的不同在于,key是一个复合数据结构,由多维元素构成,包括rowkey、columnfamily、qualif ier、type以及timestamp。

  • 稀疏:

       稀疏性是HBase一个突出特点。从图1-3逻辑表中行"com.example.www"可以看出,整整一行仅有一列(people:author)有值,其他列都为空值。

  • 排序:

         构成HBase的KV在同一个文件中都是有序的,但规则并不是仅仅按照rowkey排序,而是按照KV中的key进行排序——先比较rowkey,rowkey小的排在前面;如果rowkey相同,再比较column,即column family:qualif ier,column小的排在前面;如果column还相同,再比较时间戳timestamp,即版本信息,timestamp大的排在前面。

  • 分布式:

         很容易理解,构成HBase的所有Map并不集中在某台机器上,而是分布在整个集群中。

2. Hbase 体系结构

Hbase-01-体系结构与数据模型概述

Master-slave 结构

Master

Hbase-01-体系结构与数据模型概述

Master主要职责:

  • 处理用户的各种管理请求,包括建表、修改表、权限操作、切分表、合并数据分片以及Compaction等。

  • 管理集群中所有RegionServer,包括RegionServer中Region的负载均衡、RegionServer的宕机恢复以及Region的迁移等。

  • 清理过期日志以及文件,Master会每隔一段时间检查HDFS中HLog是否过期、HFile是否已经被删除,并在过期之后将其删除。

Zookeeper:

临时节点是指只要创建znode的会话处于活动状态就存在的znode,然后在会话结束时删除znode。

3. 数据模型

行式存储

  • 数据一次存储和检索的时候操作一行,因此如果只需要一行中的某些数据,就可能读取不必要的数据

  • 易于读写记录

  • 适用于 OLTP 系统

  • 与面向列的数据存储相比,典型的压缩机制提供的效果较差

  • 在执行适用于整个数据集的操作时效率不高,因此聚合是一个昂贵的操作

列式存储

  • 数据以列的形式存储和检索,因此,如果只需要一些数据,则只能读取相关数据。

  • 适用于OLTP系统

列族式存储

  • 从概念上来说,列簇式存储介于行式存储和列式存储之间,可以通过不同的设计思路在行式存储和列式存储两者之间相互切换。

参考:

https://www.netwoven.com/2013/10/10/hbase-overview-of-architecture-and-data-model/

https://www.dezyre.com/article/overview-of-hbase-architecture-and-its-components/295

https://data-flair.training/blogs/hbase-architecture/

https://www.edureka.co/blog/hbase-architecture/

https://towardsdatascience.com/hbase-working-principle-a-part-of-hadoop-architecture-fbe0453a031b

上一篇:面试(串讲三)


下一篇:基于Hbase 的微博案例