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 体系结构
Master-slave 结构
Master
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