绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
HBase原理深入解析(一)----HBase架构总览
2020-05-09 15:32:39

于简书:HBase原理深入解析(一)----HBase架构总览

作者简书ID:小北觅


前言:掌握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内部的细节、读写流程等进行分析。敬请期待。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Hbase资料库
创建时间:2020-05-08 14:42:11
Hbase资料库一站式查询。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 小雨滴
    专家
  • Leila
    专家
  • 飘絮絮絮丶
    专家
戳我,来吐槽~