目录
一、概念
二、架构
1.Client
2.Zookeeper
3.HMaster
4.HRegionServer
三、特性
1.数据存储庞大
2.支持随机读写
3.轻松融入生态
4.数据强一致性
5.性能足够高效
四、适用场景
五、其他事宜
1.权益备注
2.支持博主
大数据入门系列文章
这里简单介绍的HBase的概念、设计理念、数据模型、逻辑结构、架构等。至于比较详细的介绍,会单独针对这个组件进行详细介绍,可以关注博客后续阅读。
一、概念
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
Apache HBase是以HDFS为数据存储的,一种分布式、可扩展的NoSQL数据库。
HBase数据模型:HBase的设计理念依据Google的BigTable论文,论文中对于数据模型的首句介绍。BigTable是一个稀疏的、分布式的、持久的多维排序map(映射)。该map由行键、列键和时间戳索引。map中的每个值都是一个未解释的字节数组。
最终理解HBase数据模型的关键在于稀疏、分布式、多维、排序的映射。其中映射map指代非关系型数据库的Key-Value结构。
HBase逻辑结构:存储数据稀疏,数据存储多维,不同的行具有不同的列。数据存储整体有序,按照RowKey的字典排列,RowKey为Byte数组。
二、架构
HBase整体的基础架构如下图
1.Client
使用HBase RPC机制与HMaster和HRegionServer进行通信,Client与HMaster进行通信管理类操作,Client与HRegionServer进行数据读写类操作。
2.Zookeeper
HBase 通过 Zookeeper 来做 Master 的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作。
Zookeeper Quorum存储-ROOT-表地址、HMaster地址,HRegionServer把自己以Ephedral方式注册到Zookeeper中,HMaster随时感知各个HRegionServer的健康状况,Zookeeper避免HMaster单点问题。
3.HMaster
HMaster主要是维护一些集群的元数据信息,同时监控RegionServer的服务状态,并且通过Zookeeper提供集群服务,向客户端暴露集群的服务端信息。
4.HRegionServer
HBase中最核心的模块,主要负责响应用户I/O请求,向HDFS文件系统中读写数据HBase中最核心的模块,主要负责响应用户I/O请求,向HDFS文件系统中读写数据。
三、特性
1.数据存储庞大
HBase支持非常大的数据集,数十亿行,数百万列。如此庞大的数据量级,足以撑爆我们在J2EE阶段学习过的所有数据存储引擎。
2.支持随机读写
HBase支持大数据量的随机、实时读写操作。在海量数据中,可以实现毫秒级的数据读写。
3.轻松融入生态
HBase从一开始就深度集成了Hadoop。HBase基于Hadoop进行文件持久化,还继承了Hadoop带来的强大的可扩展性。Hadoop可以基于廉价PC机组建庞大的应用集群。HBase也深度集成了Hadoop的MapReduce计算框架,并且也正在积极整合Spark。这使得HBase能够很轻松的融入到整个大数据生态圈。
4.数据强一致性
HBase的数据是强一致性的,从CAP理论来看,HBase是属于CP的。这种设计可以让程序员不需要担心脏读、幻读这些事务最终一致性带来的问题。
5.性能足够高效
最后最重要的还是HBase的框架性能是足够高效的。HBase的开源社区非常活跃,他的性能经过很多大型商业产品的验证。Facebook的整个消息流转的基础设施就构建于HBase之上。
四、适用场景
这里不妨拿Hive来比较一下,有助于我们理解HBase的适用场景。
Hive提供了基于SQL的对海量数据进行查询统计的功能,但是Hive不存储数据,所有数据操作都是对HDFS上的文件进行操作,所以他对数据的查询操作能做的优化比较有限。同时Hive也无法直接管理数据,对数据的管理依赖于MapReduce,所以延迟非常高。所以Hive通常只适用于一些OLAP的场景,并且通常是与其他组件结合一起进行使用。
而HBase与Hive的区别就非常明显。HBase基于HDFS来存储数据,但是他存储的数据都是经过自己优化索引后的数据,所以他对数据的存储是非常高效的,比HDFS直接存储文件的性能要高很多,可以作为整个大数据的存储基石。而HBase以类似于Redis的列式存储来管理数据,对数据的增删改都会非常高效,可以达到毫秒级响应。同时,也提供了完善的客户端API,所以他完全可以作为传统意义上的数据库使用,适用于大部分的OLTP的场景。但是他的缺点也比较明显,基于列式存储的数据,天生就不太适合大规模的数据统计,所以在很多OLAP的场景,需要结合其他一些组件如spark、hive等,来提供大规模数据统计的功能。
五、其他事宜
1.权益备注
如有侵权请联系我删除。
2.支持博主
如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!
大数据入门系列文章
1.大数据入门-大数据是什么
2.大数据入门-大数据技术概述(一)
3.大数据入门-大数据技术概述(二)
4.大数据入门-三分钟读懂Hadoop
5.大数据入门-五分钟读懂HDFS
6.大数据入门-五分钟读懂Hive
7.大数据入门-什么是Kudu
帅哥美女们走过路过不要错过,关注点赞走上人生巅峰!!!