【HBase-2】HBase的原理和架构

1、逻辑存储模型
    HBase以表的形式存储数据,表由行和列组成。列划分为若干个列族,服务器

    RowKey:Hbase使用Rowkey来惟一的区分某一行的数据。如图中"rk001"
    列族:Hbase经过列族划分数据的存储,列族下面能够包含任意多的列,实现灵活的数据存取。Hbase的列族不是越多越好,官方推荐的是列族最好小于或者等于3。咱们使用的场景通常是1个列族。如图中的“CF1”列族,下面包含两个列:"Name"和"Alias"。
    时间戳:TimeStamp对Hbase来讲相当重要,由于它是实现Hbase多版本的关键。在Hbase中使用不一样的timestame来标识相同rowkey行对应的不通版本的数据。
    Cell:HBase 中经过 rowkey 和 columns 肯定的为一个存储单元称为 cell。每一个 cell 都保存着同一份 数据的多个版本。版本经过时间戳来索引。架构

2、物理存储模型负载均衡

在HBase中,数据以表的形式存储,表由不少行组成,每一行由Row key(行键)以及一个或多个的列值组成。咱们能够这么想,当表有不少不少的Row时,咱们把这个表按某些规则(好比每500条)拆分红不少部分,那么拆分后的每一部分就是所谓的HRegion,这个HRegion做为一个总体被HMaster分配到某一个RegionServer中。这里能够这样理解,把HMaster想象成一个老大,他把HRegion给分配到某一个服务器上,这样一来,一个表就被分红多个HRegion并可能分配到了不一样的RegionServer上。咱们刚说HRegion是一个总体,意思是他不能再继续往下分割了,他必须在一个RegionServer上。ide

3、整体架构
    HBase的整体结构图以下:
【HBase-2】HBase的原理和架构日志

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

HBase底层依赖HDFS,经过DFS Cilent进行HDFS操做。
HMaster负责把HRegion分配给HRegionServer,每个HRegionServer能够包含多个HRegion,多个HRegion共享HLog,HLog用来作灾难恢复。
每个HRegion由一个或多个Store组成,一个Store对应表的一个列族,每一个Store中包含与其对应的MemStore以及一个或多个StoreFile(是实际数据存储文件HFile的轻量级封装),MemStore是在内存中的,保存了修改的数据,MemStore中的数据写到文件中就是StoreFile。blog

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有着本身的格式。

相关文章
相关标签/搜索