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)组成,单元格可以存储多个版本的数据,多个版本数据以时间戳进行区分。
HBase简介
HBase简介

4、Phoenix

Phoenix是HBase的开源SQL中间层,它允许使用标准的JDBC的方式来操作HBase上的数据。使用Java API访问HBase太过复杂,Phoenix可以使用标准的SQL来完成对HBase上数据的操作。