HBase简介
1、Hadoop局限
要想明白为什么产生HBase,就需要先了解Hadoop存在的限制?
- Hadoop的局限在于只能执行批处理,并且只能顺序访问数据,即使最简单的工作,都必须搜索整个数据集,无法实现随机访问。
- 传统的关系型数据库可以实现数据的随机访问,但它却不能用于海量数据的存储。
- HBase可以解决海量数据存储和随机访问问题
2、HBase简介
- HBase是基于HDFS的面向列的分布式数据库。
- HBase依托于HDFS作为最基本存储单元,可以实现实时地随机访问超大规模结构化数据集。
- HBase特点:①数据访问速度快,响应时间约2-20毫秒;②支持随机读写,每个节点20k~100k+ ops/s;③可扩展性,可扩展到20,000+节点
3、HBase Table
HBase的数据模型是由一张张的表组成的,表由行和列组成,又不同于关系型数据库的行和列。
- 表:HBase的表将映射成HDFS中的文件。
- 行:表中的每一行代表一个数据对象,每一行都以一个行关键字(Row Key)进行唯一标识。
- 列簇:HBase表中的每一列都归属于某个列簇,列簇是表的Schema的一部分,而列不是。在定义HBase表的时候需要提前设置好列簇,列簇一旦确定后就不能轻易更改。
- 列:每个列簇可以包含任意数量的列。
- 存储单元:每一个行键、列关键字共同组成一个单元格,在该单元格中存储数据。
- 时间戳:在向HBase表中插入数据时都会使用时间戳来进行版本标识,作为单元格数据的版本号。每一个列簇的单元格数据的版本数量都由HBase单独维护,默认情况下HBase保留三个版本的数据。
也就是说,HBase是一个面向列簇的数据库,表schema仅定义列簇,表具有多个列簇,每个列簇可以包含任意数量的列,列由多个单元格(cell)组成,单元格可以存储多个版本的数据,多个版本数据以时间戳进行区分。
4、Phoenix
Phoenix是HBase的开源SQL中间层,它允许使用标准的JDBC的方式来操作HBase上的数据。使用Java API访问HBase太过复杂,Phoenix可以使用标准的SQL来完成对HBase上数据的操作。