Apache Hbase™是 Hadoop 数据库,是一个分布式、可伸缩、大数据存储区。当您需要随机、实时读/写访问大数据时,请使用 Apache Hbase™。 该项目的目标是在商用硬件集群之上托管非常大的表----数十亿行X百万列。Apache Hbase是一个开源的、分布式的、版本化的、非关系的数据库,它参考了 Google 的Bigtable。 正如 Bigtable 利用 Google 文件系统提供的分布式数据存储一样,Apache Hbase 在 Hadoop 和 HDFS 之上提供了类似 Bigtable 的功能。
**定义:**Hbase 是 Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、实时
读写的分布式 NOSQL 数据库。
**作用:**主要用来存储非结构化、半结构化和结构化的松散数据(列式存储的 NoSQL 数据
库)
利用 Hadoop HDFS 作为其文件存储系统,利用 Hadoop MapReduce 来处理 Hbase中的海量数据,利用 Zookeeper 作为其分布式协同服务。正常情况下,Hbase 不依赖于YARN,用到的时候可以随时开启。从技术上讲,Hbase 实际上更像是“数据存储”而不是数据库”,因为它缺少 RDBMS 中的许多功能,例如字段类型,二级索引,触发器和高级查询语言等。
2、数据模型逻辑上,Hbase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从底层物理存储结构(Key-Value)来看,Hbase 更像一个 Map。
3、Hbase 逻辑结构 4、物理储存结构 5、名称解释- NameSpace
命名空间,相当于关系型数据库中的 database,每个命名空间下有多个表。Hbase 默
认自带的命名空间 hbase 和 default;hbase 中存放的是 Hbase 内置的表,default 是用
户默认使用的命名空间。 - Region
类似关系型数据库的表,不同之处在于 Hbase 定义表示只需要声明列族,不需要声明
具体的列。列可以动态的按需要指定;Hbase 更加适合字段经常变更的场景。开始创建表
是一个表对应一个 region,当表增大到一定值是会被拆分为两个 region。 - Row
Hbase 表中的每行数据被称为 Row,由一个 RowKey 和多个 Column 组成,数据是按
5
照 RowKey 的字典顺序存储的,并且查询是只能根据 RowKey 进行检索,所以 RowKey 的
设计很关键。 - Column
列是由列族(Column Family)和列限定符(Column Qualifier)进行限定,例如:
base:name,base:sex。建表示只需定义列族,而列限定符无需预先定义。 - Cell
某行中的某一列被称为 Cell(单元格),由{rowkey,column family:column
qualifier,time stamp}确定单元。Cell 中没有具体的类型,全部是字节码的形式(字节数组)
存储。 - TimeStamp
用于标识数据的不同版本(version),每条数据写入时,如果不指定时间戳,系统会
自动为其加上该字段,值为写入 Hbase 的时间。



