HBase-架构体系

Posted 码农大腿哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase-架构体系相关的知识,希望对你有一定的参考价值。

前言:

HBase是一个复杂的存储 框架。 为了实现海量数据的毫秒级响应,HBase在内存和磁盘中进行了很多复杂的操作。既保证了大,又保证了快。

那么HBbase是如何实现这一目标的?

这一篇,我们先来看看HBase架构体系中有哪些组件,它们又做了哪些事情。为后面的学习打好基础。

本篇目标:

1.掌握HBase架构中各组件的概念与作用
2.理解 各组件所处位置以及彼此之间的关系



01

架构基础

在第一部分中,我们先来了解一下HBase架构中的主要组件,包括Master、Region Server、Zookeeper、Client、HDFS、StoreFile。

阅读过程中如果遇到不懂的名词可以先略过,我在本篇的第二部分中有详细介绍。

基础架构图

1.Master

Master是集群的主节点,本质上是一个进程。主要作用有:


1)负责管理元数据,如执行DDL操作、定期更新hbase:meta
2)分配与移动region以保证集群的负载均衡
3)管理RegionServer,出现问题时进行故障转移

在分布式集群中,Master通常运行在NameNode上。


2.Region Server

Region Server是Region的管理者,本质上是一个进程。主要作用是:


1)负责数据的增删改查,即DML操作
2)负责region的拆分与合并
3)将MemStore中数据刷写到StoreFiles                 
4)检查RegionServer的HLog文件

在分布式集群中,RegionServer都运行在DataNode上。

3.Client

Client可不经过Master直接与Region Server通信,发出读或写请求,所以Master挂掉的情况下,集群仍然可以运行一段时间。

4.ZooKeeper

HBase集群要依赖ZooKeeper才能运行。主要作用是:

1)Master高可用,协助选举Master
2)监听RegionServer状态(心跳),向Master汇报RegionServer上下线信息
3)存放与维护集群配置信息,如hbase:meta表的地址。

5.HDFS

HBase的数据最终要存储在HDFS上。

6.StoreFile

保存实际数据的物理文件,StoreFile文件存储在 HDFS 上,格式是HFile。

每个Store会产生 一个或多个StoreFile,数据在 StoreFile 中是有序的。

PS:
NameSpace、Table、Region、Store、StoreFile之间的关系是什么?

HBase表在HDFS存储路径为:
/ hbase / data / <NameSpace> / <Table> / <Region> / <ColumnFamily> / <StoreFile>

可以认为它们依次构成了逻辑上的包含关系,StoreFile是最底层的物理存储文件。



02

架构进阶

第一部分中,我们对主要组件进行了介绍,接下来将深入细节,完善整个架构体系。

详细架构图

1.hbase:meta

hbase:meta(以前叫.META.)是之前说过的命名空间 hbase中的一张表。记录了全部表的所有region相关信息,如region位于哪个Region Server上。

重点:hbase:meta表的位置信息存储在Zookeeper中!!!

PS:
0.98版本前有一个 -ROOT-表,用来存储 hbase:meta表的信息,目前已经被弃用。有些博客还在介绍这个文件,直接忽略就行。

2.Meta Cache

客户端元数据缓存。记录了 table的region信息和 habase:meta表位置信息,方便以后查询。

3.Block Cache

读缓存。作用是缓存从HDFS读取的数据,以便下次查询使用。

4.WAL

WAL(也称HLog)叫做预写入日志,记录了HBase中所有的数据变更,并以文件方式存储在HDFS。变更记录是以追加的形式添加到文件中,所以效率很高。

如果MemStore中的数据没有flush到磁盘,而Region Server出现了问题,就可以通过WAL恢复数据到磁盘。


5.MemStore

往Store中写数据时,数据会先存储在内存中的MemStore。数据排好序后,等到达flush(刷写)时机时,再 flush到 StoreFile。

MemStore的数据写入磁盘的过程 叫做flush,MemStore每次 flush都会形成一个新的 StoreFile。

PS:
刷写最小的单位是region,只要发生flush,整个region都会flush。

6.HFile

HFile是HBase在HDFS中存储数据时使用的文件格式。它包含一个多层索引,允许HBase在不读取整个文件的情况下寻找数据。



总结:

第一部分中提到的主要组件,不仅要记住作用,还要认真思考它们之间是怎么配合的,有一个的把握。 第二部分中 提到的组件,需要记住 它们 的作用, 看到 要能想起来。

在本文中提到了flush以及region的拆分与合并等概念,我将在 下一篇专门对这些架构相关原理进行更深入的介绍。

你学废了吗?

—  END  —

以上是关于HBase-架构体系的主要内容,如果未能解决你的问题,请参考以下文章

HBase架构核心模块

HBase架构核心模块

HBase架构核心模块

HBase架构核心模块

Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

Hbase入门笔记----架构以及应用介绍