hbase(一)基本介绍
hbase 介绍
Apache HBase是一种开源、分布式、版本控制的非关系型数据库,模仿Google的Bigtable:Chang等人的结构化数据分布式存储系统。正如Bigtable利用了Google文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供了类似Bigtable的功能。hbase 是apache中的一个开源项目是大数据生态中的一个比较重要的项目。
主要的特点是可以直接数据的海量存储,支持数十亿行×数百万列。
Hbase 可以理解为hadoop database ,因为 hbase 的数据存储是依赖于hadoop中的hdfs 的。数据都是存储在hdfs中的。
hbase 结构
逻辑结构
对于一般的关系型数据库表格,基本的信息是列 和行,对于每个行都有一个唯一标识id 信息。并且每个数据行都有共同的列。
而Hbase 的数据结构看做一个表格的话有一些不同。

首先对于每个行 都有一个row key 属性。 通过row key 能够找到对应的数据行。数据存储的时候根据row key 有序排序。
不同的行中的列可以不同,不同的行可以设置不同的列。
在列上有一个列族的概念 (column family) 可以对特定类别的列进行归类,因为hbase 支持的列是特别多的,可以通过列族进行更好的管理。
查询特点
支持大数据量存储
不支持复杂查询,只能根据行id查询单行数据和根据行id 查询范围数据
数据模型
- Name Space
命名空间,类似于关系型数据库的 database 概念。
命名空间下有多个表,可以自己创建 namesapce.
同时hbase自带2个默认的namespace ,分别是 hbase 和 default,hbase 中存放的是 HBase 内置的表,default 是用户默认使用的namespace。
Table
类似于关系型数据库的表概念。HBase 在定义表的时候不用定义列,只需要定义列族,列可以动态的进行添加。Row
HBase 表中的每行数据都由一个 RowKey 和多个 Column(列)组成,数据是根据row key 排序的,并且查询也是只能根据row key进行查询的。Column
hbase 中的列包括 Column Family(列族) 和 Column Qualifier(列限定符)
- Time Stamp
用于标识数据的不同版本(version),每条数据写入时,系统会自动为其加上该字段,
其值为写入 HBase 的时间。因为hbase的存储是基于hdfs,而hdfs是不支持修改的,只能对数据执行追加操作,当要对某个行的数据修改时,那么追加一个相同的rowkey的数据,数据戳比较新的数据就是最终的数据。
- Cell
表格的信息,通过 rowkey,column Family: column Qualifier,timestamp 能够确定一个唯一的数据单元,cell中的数据是通过字节码的形式存储的。



