1.1HBase概念
HBase是一个分布式(有角色,搭建集群)的面向列的数据库。
面向行:面向行的特点是,即是某一行的某一列没有存储数据,那么这一列也会占用空间,另外在磁盘的存储上,每一行的各个列的数据也都是顺序存储在一起的。
面向列:每一行的数据可以有不同的列,有多少列就占用多少存储空间,没有的列就不占用存储空间。在磁盘的存储上,是以列族存储的。
HBase与hive的比较
hive数据库分析工具,将元数据存储在mysql中,将业务数据存储在hdfs上
HBase数据库,业务数据也是存储在hdfs的,元数据是由它本身管理的
HBase与mysql相比,具有以下特点
- 能存储的数据量大
- 读(150w次/s)写(10w次/s)的速度快
1.2HBase的特点
- 海量存储
能够处理PB级别的海量数据,并在采用廉价的pc端的情况下,能够在几十到几百毫秒之间返回数据。这一特点与HBase较好的扩展性有很大的联系。
2.列式存储
这里所说的列式存储就是列族存储,HBase是根据列族来存储数据的。
列族(column family):就是列的分类,列族在创建表的时候必须指定,每一个列族中可以包含多个列,列可以在插入数据的时候指定。
在插入数据时,必须指定行键(rowkey),行键,类似于mysql中的主键,用来表示某条数据的唯一性,相同的行键,就代表是同一条数据。
3.极易扩展
HBase的扩展主要体现在两个方面:
一个是基于存储的扩展(HDFS)。也就是只要部署的机器多,HDFS存储的数据就多,那么HBase存储的数据也多。
另一个是基于上层处理能力(RegionServer)的扩展,当存储的数据多时,相应的也应该有多个能够处理这些数据的进程RegionServer。
RegionServer:和HDFS中的DataNode与YARN中的NodeManager的地位相似,是具体干活的小弟。
HBase是典型的master/slave(主从)架构,也是分角色的,老大是Hmaster或者Master,具体干活的小弟是HRegionServer或者RegionServer。
【注意】在部署HBase集群的时候,要将HBase与HDFS部署在一起,因为HBase是基于HDFS的,部署在一起,可以提高HBase的读写速度,即数据本地化:数据放在本地处理。
HBase的表是由Region(区、片)组成的,当HBase的表越来越大的时候,表就会分为若干个Region,Region是由RegionServer负责管理的,一个RegionServer可以管理多个Region(这些Region可以是同一个表中的多个Region,也可以是不同表中的Region)
一个表由一个Region或者多个Region组成;
一个Region只能由一个RegionServer管理。
4.高并发
HBase要将数据写到HDFS上,再由HDFS写到磁盘上,过程虽然繁琐,但是单个IO延迟下降的并不多,主要突出了HBase框架的优越性,能够获得高并发,低延迟的服务。
5.稀疏
稀疏主要是指列的灵活性,可以指定任意多个的列,当列为空的时候,不占用任何的存储空间。