1.前世
在开启HBase源码分析之旅前,我们先来寻根溯源,梳理一下HBase这一分布式数据库的发展历程。 HBase 属于Apache下的一个顶级开源项目,大数据三大巨头之一。官网介绍为 ”HBase is the Hadoop database, a distributed, scalable, big data storage”,即HBase是建立在Hadoop之上的数据库。Hadoop也是Apache下的一个顶级开源项目,包含了分布式文件系统和分布式计算系统。 Hadoop和HBase项目的灵感来自于科技巨头Google的三大工程性论文:
- Google File System
- MapReduce
- BigTable
这三大论文详细介绍了google大数据存储、计算和管理的设计方案,尽管没有开源代码,但是工程人员还是根据论文开发了风靡大数据界的Hadoop和HBase。Hadoop的分布式文件系统HDFS和计算框架MapReduce的直接指导思想就来源于GoogleFile System和MapReduce这两篇论文,而HBase 这一建筑于Hadoop之上的分布式数据管理系统的开发思想则来源于论文BigTable。
2. 今生
HBase作为一个非关系型的面向列式存储的分布式数据库,在Apache基金会下历经0.x, 1.x, 2.x的发展,已经逐步成熟稳健。因其能够进行海量存储、高并发、极易扩展等特点,各大类型公司都有在其上的应用实践。下面我们就来一起学习一下它的整体架构,然后再深入源码进行分析。
2.1 整体架构
就像之前介绍的那样,HBase的数据是存储在Hadoop的分布式文件系统HDFS之上的。 HBase本身由HMaster和HRegionServer组成,典型的主从结构。HMaster和HRegionServer还要和Zookeeper这一分布式协调系统交互,以便在HMaster或者某个HRegionServer发生异常时,zookeeper能够及时通知集群中的其它备用机器,迅速响应处理异常恢复可用性。
HMaster用来响应表的元数据管理,如建立、删除等;以及某个HRegionServer异常时通知其下线,并对其上的HRegion进行拆分通知其它HRegionServer帮忙承担责任;还有就是平衡整个集群,对HRegionServer上的负载进行均衡分流。
HRegionServer用来进行具体的数据处理。其上的最小数据存储单元是HRegion,一张表可以对应一个或者多个HRegion ,HRegion在HDFS上表现为一张HFile的文件。 HRegion在运行的中间过程中,又分为Memstore 和StoreFile ,Memstore存储在内存中,积累到一定阈值后刷到磁盘上形成StoreFile,每刷一次形成一个StoreFile 。StoreFile过多到一定时候,就会进行合并,合并的最终结果形成一个HFile。
完
2018年9月24日(中秋佳节)