HBase原理深入解析(一)----HBase架构总览

前言:掌握Hbase的重要性不言而喻,掌握Hbase的设计原理更是重中之重。本文是对HBase原理进行讲解系列文章的开篇,尽量详细地从整体上介绍HBase的架构,对每个部分的名词进行初步解释,使我们对HBase有个整体的了解。

一、逻辑存储模型

    HBase以表的形式存储数据,表由行和列组成。列划分为若干个列族,如下图所示:

    

    RowKey:Hbase使用Rowkey来唯一区分某一行的数据,如图中"rk001"。

    列族:Hbase通过列族划分数据的存储,列族下面可以包含任意多的列,实现灵活地存取数据。Hbase的列族不是越多越好,官方推荐的是列族最好小于或者等于3。一般场景下,使用1个列族即可。如图中的“CF1”列族,下面包含两个列:"Name"和"Alias"。

    时间戳:TimeStamp对Hbase来说至关重要,它是实现Hbase多版本的关键。在Hbase中,使用不同的timestame来标识“相同rowkey行对应的不同版本的数据”。

    Cell:HBase 中通过 rowkey 和 columns 确定的一个存储单元,称为 cell。每个 cell 都保存着同一份数据的多个版本,版本通过时间戳来索引。

二、物理存储模型

    HBase的物理存储模型,如下图:

在HBase中,数据以表的形式存储,表由很多行组成,每一行由Row key(行键)以及一个或多个的列族组成。

当表有很多Row时,把这个表按某些规则(比如每500条)拆分成很多部分,那么拆分后的每一部分就是所谓的HRegion。这个HRegion作为一个整体,被HMaster分配到某一个RegionServer中。

可以把HMaster当成一个管理器,它把HRegion分配到某一个服务器上。这样一来,一个表就被分成多个HRegion,并可能分配到了不同的RegionServer上。

HRegion是一个整体,它不能再继续往下分割了,必须在一个RegionServer上。

三、总体架构

    HBase的总体结构图,如下:

其中包括了HMaster、HRegionSever、HRegion、HLog、Store、MemStore、StoreFile、HFile等。

HBase底层依赖HDFS,通过DFS Cilent进行HDFS操作。

HMaster负责把HRegion分配给HRegionServer,每一个HRegionServer可以包含多个HRegion,多个HRegion共享HLog,HLog用来做灾难恢复。

每一个HRegion由一个或多个Store组成,一个Store对应表的一个列族。每个Store包含与其对应的MemStore以及一个或多个StoreFile(是实际数据存储文件HFile的轻量级封装)。MemStore是在内存中保存的、被修改的数据,MemStore中的数据写到文件中就是StoreFile。

3.1 HMaster

HMaster的主要功能为:
① 把HRegion分配到某一个RegionServer。
② 若某个RegionServer宕机了,HMaster可以把这台机器上的Region迁移到其他active的RegionServer上。
③ 对HRegionServer进行负载均衡。
④ 通过HDFS的dfs client接口,回收垃圾文件(无效日志等)。
注:HMaster没有单点问题,HBase中可以启动多个HMaster。通过Zookeeper的Master Election机制,保证总有一个Master运行。

3.2 HRegionServer

① 维护HMaster分配给它的HRegion,处理对这些HRegion的IO请求。也就是说,客户端直接和HRegionServer打交道。
② 负责切分正在运行过程中变得过大的HRegion。

3.3 HRegion

    下面,我们看看HRegion的结构:

 

每个HRegion由多个Store构成,每个Store保存一个列族(Columns Family)。表有几个列族,则有几个Store。

每个Store由一个MemStore以及一个或多个StoreFile组成,MemStore是Store在内存中的内容,写到文件后就是StoreFile。StoreFile底层是以HFile格式保存。

3.4 HLog

HLog(WAL log):WAL意为write ahead log(预写日志),用来做灾难恢复使用。HLog记录数据的变更,包括序列号和实际数据。一旦region server 宕机,就可以从log中回滚还没有持久化的数据。

3.5 HFile

HBase的数据最终是以HFile的形式存储在HDFS中。HBase中HFile有着自己的格式,此处不细讲,留待后面文章详解。

四、总结

本文从整体上简单介绍了HBase的架构,后续文章将会对HBase内部的细节、读写流程等进行分析。

转自:https://www.jianshu.com/p/9d3d388eae19

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值