1.  HBase简介

1.1  为什么使用HBase


传统的RDBMS关系型数据库(MySQL/Oracle)存储一定量数据时进行数据检索没有问题,可当数据量上升到非常巨大规模的数据(TB/PB)级别时,传统的RDBMS已无法支撑,这时候就需要一种新型的数据库系统更好更快的处理这些数据。我们可以选择HBase。

1.2  HBase的地位


HBase占有举足轻重的作用,它居于HDFS之上,与MapReduce可以集成,与Hive也可以集成,HBase表中的数据与Hive表的数据可以关联,Spark也可以读HBase的数据。



2.  HBase是什么

*
HBase技术来源于 Fay Chang 所撰写的Google论文:Bigtable(一个结构化数据的分布式存储系统)。

*
HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于
非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

*
HBase(Hadoop Database),是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC
Server上搭建起大规模结构化存储集群。

*
HBase实际上是一个Hadoop的数据库系统,它的主要作用和传统数据库系统一样存储数据和检索数据。不同的是,HBase可以存储海量数据及海量数据的检索。

2.1  HBase与Hadoop的对比


Hadoop/HDFS

HBase


为分布式存储提供文件系统

提供表状的面向列的数据存储


针对存储大尺寸的文件进行优化,不需要对这些文件进行随机读写

针对表状数据的随机读写进行优化


直接使用文件

使用key-value对数据


数据模型不灵活

提供灵活的数据模型


使用文件系统和处理框架

使用表状存储,依赖内置的Hadoop MapReduce支持


为一次写多次读进行优化

为多次读写进行优化

2.2  HBase与关系型数据库的功能对比


关系型数据库RDBMS

HBase


支持向上扩展。(若需要更多的磁盘、内存和处理能力,需要升级服务器)

支持向外扩展。(若需要更多的磁盘、内存和处理能力,不需要升级服务器,需要为集群添加新的服务器)


使用SQL查询从表中读取数据

使用API和MapReduce来访问HBase表的数据


面向行(每行数据都是一个连续的页的单元)

面向列(每列数据都是一个连续的页的单元)


数据总量依赖于服务器配置

数据总量不依赖于服务器配置,而是总的机器数量


模式更严格

模式灵活,不太严格


具有ACID支持

没有内建的对HBase的支持


适合结构化数据

适合结构化和非结构化数据


传统关系型数据库一般是中心化的

通常是分布式的


一般能保证事务完整性

HBase不支持事务


支持JOIN

不支持JOIN


支持参照完整性

没有内置的参照完整性支持

* 当数据量比较小,RDBMS可以支撑的时候,可以用RDBMS来实现,若需要在线事务处理时,RDBMS是合适的。
* 但当有海量数据需要处理时,可以选择HBase,并且HBase由于是列存储型数据库,在聚合计算和数据分析时非常快。

列存储数据库的优点

列存储数据库的缺点


具有高效和数据压缩的内部支持

JOIN和多表合并数据的查询性能不好


支持快速数据检索

更新过程中有大量的写入和删除操作,需要频繁合并和分裂,降低了存储效率


管理和配置简单。支持横向扩展

对关系模型支持不好,分区和索引模式设计比较困难


聚合查询的性能非常高
 

可高效地进行分区
 
3.  HBase架构设计及表的存储设计

*
HBase是水平扩展的、分布式的、开源有序映射数据库。它运行在Hadoop文件系统HDFS上。它不要求有预定义的模式,可以被看做弹性扩展的多维表格,通过动态添加列,在数据插入或查询之前修改列结构,以支持任意的数据结构。
* HBase是一个建立在HDFS上的列存储数据库,具有至此线性扩展(横向扩展)、自动故障转移、自动分区及模式自由等特性。
3.1  HBase体系架构图



3.2  HBase架构设计及表的存储设计

* Master
为HBase的主节点,用来协调客户端应用程序和RegionServer的关系,同时用来监控和记录元数据的变化和管理。

* RegionServer

是从节点,用region的形式处理实际的表。region是HBase表的基础单元组件,它存储了分布式表。所以HBase表和HBase集群利用Master和RegionServer来协同工作。

* ZooKeeper

是一个高性能、集中化、分布式应用程序协调服务,它为HBase提供了分布式同步和组服务。在HBase中,它用来选举集群主节点Master,以便跟踪可用的在线服务器,同时维护集群的元数据。一般安装多个,用于提供Master的高可用性。


通常,Master和Hadoop的NameNode进程运行在同一台主机上,与DataNode通信以读写HDFS的数据。RegionServer跟Hadoop的DataNode运行在同一台主机上。

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信