定义
HBase是一种分布式、可扩展、支持海量数据存数的NoSQL数据库。
HBase数据模型
HBase的数据模型与关系型数据库类似,数据存储在一张表中,有行有列,但是HBase的底层物理结构是(K-V)。
使用HBase的情况
当满足以下情况的时候,使用HBase,才能发挥它的作用
表单的数据量超千万,且并发挺高
数据分析需求较弱,或者不需要那么灵活和实时
HBase的优缺点
优点
列可以动态增加,并且列为空就不存储数据,节省存储空间。
Hbase自动切分数据,使得数据存储自动具有水平scalability。
Hbase可以提供高并发读写操作的支持。
缺点
不能支持条件查询,只支持按照Row key来查询。
HBase并不适合传统的事物处理程序或关联分析,不支持复杂查询,一定程度上限制了它的使用,但是用它做数据存储的优势也同样非常明显。
HBase的数据模型
1、Name Space
? 命名空间,类似于关系型数据库的DataBase,每个命名空间下多有个表。HBase有两个自带的命名空间,hbase和default,hbase中存放的是HBase内置的表,default是用户默认使用的命名空间
2、Region
? 类似于关系型数据库中的表,不同的是,HBase定义表时,只需要声明列族即可,不需要声明具体的列。因此,在往HBase里写入数据时,字段可以动态的、按照需要指定。
3、Row
? HBase表中的每一行数据都由一个RowKey和多个Column(列)组成,数据是按照RowKey的字典顺序存储的,并且查询数据的时候,只能按照RowKey进行检索,所以要认真设计RowKey.
4、Column
? HBase中的每一列都是由Column Family(列族)和Column Qualifier(列限定符)进行限定,例如info:name,info:age。建表时,只需要指明列族,而列限定符无需预先定义。
5、Time Stamp
? 用于标识数据的不同版本(version),每条数据写入时,如果不指定时间戳,系统狐疑自动为其加上该字段,其值为写入HBase的时间
6、Cell
? 由{rowkey,column Family:column Qualifier,time Stamp} 唯一确定的单元。Cell中的数据是没有类型的,全部都是字节码形式存储。
HBase整体架构
1、Region
? Region就是一段数据的集合。HBase中的表一般用于一个到多个Region,Region有以下特性:
- Region不能跨服务器,一个RegionServer上有多个Region。
- 数据量小的时候,一个Region足以存储所有数据;但是,当数据量大的时候,HBase会拆分Region。
- 当HBase在进行负载均衡的时候,也有可能会从一台RegionServer上把Region移动到另一台RegionServer上。
- Region是基于HDFS的,它的所有数据存取操作都是调用了HDFS的客户端接口来实现的。
2、RegionServer
? RegionServer就是存放Region的容器,直接上说服务器上的一个服务。一般来说,一个服务器只会安装一个RegionServer服务,当然也可以装多个。
? 当客户端从Zookeeper获取RegionServer的地址后,它会直接从RegionServer获取数据。
3、Master
? Master是所有Region Server的管理者,由它对表进行create,delete,alter。
? 对于RegionServer的操作:分配regions到每个RegionServer,监控每一个RegionServer的状态,负责均衡和故障转移
4、Zookeeper
? Zookeeper在HBase中类似于管家,Zookeeper管理了HBase所有RegionServer的信息,包括具体的数据段存放在哪个RegionServer上。
? 客户端每次与HBase连接,其实都是先于Zookeeper通信,查出哪个RegionServer需要连接,然后再连接RegionServer。
5、HDFS
HDFS为HBase提供最终的底层数据存储服务,同时为HBase提供高可用的支持。
|