一、HBase简介
HBase起源于2006年Google发表的BigTable论文。HBase是一个高可靠性、高性能、面向列、可伸缩的分布式数据库,利用HBase可在廉价PC服务器上搭建起大规模结构化存储集群。HBase的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。
二、HBase架构
HBase构建在Hadoop HDFS之上,Hadoop HDFS为HBase提供了高可靠的底层存储支持,Hadoop MapReduce为HBase提供高性能的计算能力,Zookeeper为HBase提供稳定服务和容错机制。HBase的整体架构如下所示。
主要节点及其作用如下图所示
三、HBase的特点
1)容量巨大:单表可以有百亿行、数百万列。
2)无模式:同一个表的不同行可以有截然不同的列。
3)面向列:HBase是面向列的存储和权限控制,并支持列独立索引。
4)稀疏性:表可以设计得非常稀疏,值为空的列并不占用存储空间
5)扩展性:HBase底层文件存储依赖HDFS,它天生具备可扩展性
6)高可靠性:HBase提供了预写日志(WAL)和副本(Replication)机制,防止数据丢失
7)高性能:底层的LSM(Log-Structured Merge Tree)数据结构和Rowkey有序排列等架构上的独特设计,使得HBase具备非常高的写入性能。
四、HBase数据存储方式
Region在行方向上的存储方式
HBase表的数据按照行键RowKey的字典序进行排列,并且切分多个HRegion存储,存储方式如下所示。
HRegion的切分方式
每个Region存储的数据是有限的,如果当Region增大到一个阀值(128)时,会被等分切成两个新的Region,切分方式如下所示。
HRegion的分布方式
一个HRegion Server上可以存储多个Region,但是每个Region只能被分布到一个HRegion Server上,分布方式如下。
五、HBase寻址机制
当HBase表查询数据遵循的是寻址机制,接下来,通过一张图来学习一下HBase的寻址机制,具体如下所示。
Zookeeper中存储的是ROOT表的数据,而ROOT表中存储的是META表的Region信息,也就是所有RegionServer的地址。
六、HBase与传统数据库的区别
存储模式
传统数据库中是基于行存储的;而HBase是基于列进行存储的。
表字段
传统数据库中的表字段不超过30个;而HBase中表字段不作限制
可延伸性
传统数据库中的列是固定的,需要先确定列有多少才会增加数据去存储;而HBase是根据数据存储的大小去动态的增加列,列是不固定的。
创作不易 觉得有帮助请点赞关注收藏~~~