HBase基本知识

Posted Z-hhhhh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase基本知识相关的知识,希望对你有一定的参考价值。

定义

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提供高可用的支持。

以上是关于HBase基本知识的主要内容,如果未能解决你的问题,请参考以下文章

一文让您全面了解清楚HBase数据库的所有知识点,值得收藏!

HBase原理和架构

Hbase基本原理

HBaseRowkey设计

Hbase与传统关系型数据库对比

HBase shell指令总结