一 HBase 简介
HBase是一个构建在HDFS(Hadoop分布式文件系统)之上的、分布式的、面向列的开源数据库,由Google BigTable的开源实现,它主要用于存储海量数据,是Hadoop生态系统中的重要一员
二 HBase的优势
1. 成熟性
a. 有成熟的社区,目前是Apache公司的顶级项目之一
b. 有充分的实践经验,多家大型互联网公司都在使用
c. 有丰富的工具支持,例如:Phoenix,Spark,Solr,Flink等
2. 高效性
a. 将随机读写转化为顺序读写,适应高并发写入
b. 均衡效果好,读写性能与机器数保持线性相关
c. 行中没有保存数据的列不占存储空间
3. 分布式特性
a. 基于HDFS、Zookeeper
b. 一致性,可用性,分区容忍性
c. 大数据存储
b. 易扩展
三 HBase基本知识
1. 表特点
a. 容量大: 一个表可以有十亿行,数百万列
b. 面向列: 面向列(族)的存储和权限访问,因此,表可以设计的非常稀疏
c. 数据类型单一: HBase中的数据类型都是字符串
d. 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列
2. 主键(Row Key)
a. 用来检索记录的主键
b. 访问HBase表中的行,只有三种方式:
通过单个Row Key访问
通过Row Key的range
全表扫描
c. 主键为任意字符串,最大长度为64kb,按照字典顺序存储,在HBase内部保存为字节数组
3. 列族(Colunm Family)
a. 列族在创建表的时候声明,一个列族可以包含多个列,列中的数据都是以二进制形式存在,没有数据模型
b. 列族是一些列的集合
c. 一个列族所有列成员是有着相同的前缀,比如:列course:histor和course:math都是列族course的成员,冒号(:)是列族的分隔符,用来区分前缀和列名
4. 时间戳与存储单元(Timestamp and Cell)
a. HBase中通过row和column确定一个存储单元,称为cell。每个cell都保存同一份数据的多个版本
b. 在写入数据时,时间戳可以由HBase自动赋值(当前系统时间精确到毫秒),也可以显示赋值
c. 每个cell中,不同版本的数据按照时间的倒序排序
d. {row,column,version}元祖就是HBase中的一个cell
四 HBase VS RDBMS (关系型数据库)
1. HBase中的数据类型都是字符串类型
2. HBase只有普通的增,删,改,查等操作,没有表之间的关联查询
3. HBase是基于列式存储的,而RDBMS是基于行式存储的
4. HBase适合存储大量数据,查询效率极高