HBase简介

HBase简介

HBase是Google BigTable的开源实现,Google公司很多数据如搜索、相册、导航数据都保存在BigTable中,2003年Google发布了该技术后,社区实现了HBase。

架构

HBase简介
HBase简介

HBase在Hadoop中扮演者数据库的角色,但HBase要借助底层的HDFS来存储数据,自身并没有实现文件系统,或者说HBase有点像mysql一样,支持热插拔的文件系统(HBase既支持HDFS,也支持本地文件系统,就像Mysql支持InnoDB、MyISM等等)。而上图中包围着HBase的就是计算框架(MapReduce和Spark),并且MapReduce正逐步被Spark所替代。

HBase是什么样的数据库?关键是数据模型

HBase是一个稀疏、多维度、排序的映射表。

关键要素:
  • 行键
  • 列族
  • 列限定符
  • 时间戳

HBase简介
在Mysql中,我们操作的是一行行的数据;而在HBase中,我们操作(写数据、读数据)的是单元格

什么是单元格

通过行、列族、列限定符确定的是一个单元格。
HBase简介

时间戳的功能是什么?

由于HBase是架构于HDFS之上,而HDFS的特点是一次写入、多次读取、写入后无法修改,因此如果要修改HBase中的数据是做不到的,而是以时间戳作为版本,生成该单元格的一条新数据。这样既不违反无法修改的原则,又实现了修改数据的功能,但实际上旧的数据亦然存在。

HBase简介
综上所述,HBas与关系型数据库在数据定位上有明显的区别:

  • 关系型数据库:行+列,二维定位HBase简介

  • HBase:行键+列族+列限定符+时间戳,四维定位HBase简介
    但要注意,在写入数据时,时间戳不是我们人工写的,而是我们提供行键、列族、列限定符,系统会自动生成时间戳;取数据时,系统会默认取最近的时间戳的数据。

HBase为什么能存储海量数据

HBase简介
在实际中,HBase存储的数据可能有数十亿行、数百万个列、上千个列族。这个巨大的表,被水平、竖直的切分成多个分区(Region)。一个分区,就是负载分发的基本单位,实现了分布式存储。
HBase简介

创建一个HBase表

配置Spark

编写程序读取HBase数据

编写程序向HBase写入数据