HBase-架构体系
Posted 码农大腿哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase-架构体系相关的知识,希望对你有一定的参考价值。
HBase是一个复杂的存储
框架。
为了实现海量数据的毫秒级响应,HBase在内存和磁盘中进行了很多复杂的操作。既保证了大,又保证了快。
这一篇,我们先来看看HBase架构体系中有哪些组件,它们又做了哪些事情。为后面的学习打好基础。
在第一部分中,我们先来了解一下HBase架构中的主要组件,包括Master、Region Server、Zookeeper、Client、HDFS、StoreFile。
阅读过程中如果遇到不懂的名词可以先略过,我在本篇的第二部分中有详细介绍。
Master是集群的主节点,本质上是一个进程。主要作用有:
1)负责管理元数据,如执行DDL操作、定期更新hbase:meta表
3)管理RegionServer,出现问题时进行故障转移
在分布式集群中,Master通常运行在NameNode上。
Region Server是Region的管理者,本质上是一个进程。主要作用是:
3)将MemStore中数据刷写到StoreFiles
在分布式集群中,RegionServer都运行在DataNode上。
Client可不经过Master直接与Region Server通信,发出读或写请求,所以Master挂掉的情况下,集群仍然可以运行一段时间。
HBase集群要依赖ZooKeeper才能运行。主要作用是:
2)监听RegionServer状态(心跳),向Master汇报RegionServer上下线信息
3)存放与维护集群配置信息,如hbase:meta表的地址。
保存实际数据的物理文件,StoreFile文件存储在 HDFS 上,格式是HFile。
每个Store会产生
一个或多个StoreFile,数据在 StoreFile 中是有序的。
NameSpace、Table、Region、Store、StoreFile之间的关系是什么?
/
hbase
/
data
/
<NameSpace>
/
<Table>
/
<Region>
/
<ColumnFamily>
/
<StoreFile>
可以认为它们依次构成了逻辑上的包含关系,StoreFile是最底层的物理存储文件。
第一部分中,我们对主要组件进行了介绍,接下来将深入细节,完善整个架构体系。
hbase:meta(以前叫.META.)是之前说过的命名空间
hbase中的一张表。记录了全部表的所有region相关信息,如region位于哪个Region Server上。
重点:hbase:meta表的位置信息存储在Zookeeper中!!!
0.98版本前有一个
-ROOT-表,用来存储
hbase:meta表的信息,目前已经被弃用。有些博客还在介绍这个文件,直接忽略就行。
客户端元数据缓存。记录了
table的region信息和
habase:meta表位置信息,方便以后查询。
读缓存。作用是缓存从HDFS读取的数据,以便下次查询使用。
WAL(也称HLog)叫做预写入日志,记录了HBase中所有的数据变更,并以文件方式存储在HDFS。变更记录是以追加的形式添加到文件中,所以效率很高。
如果MemStore中的数据没有flush到磁盘,而Region Server出现了问题,就可以通过WAL恢复数据到磁盘。
往Store中写数据时,数据会先存储在内存中的MemStore。数据排好序后,等到达flush(刷写)时机时,再
flush到 StoreFile。
MemStore的数据写入磁盘的过程
叫做flush,MemStore每次
flush都会形成一个新的 StoreFile。
刷写最小的单位是region,只要发生flush,整个region都会flush。
HFile是HBase在HDFS中存储数据时使用的文件格式。它包含一个多层索引,允许HBase在不读取整个文件的情况下寻找数据。
第一部分中提到的主要组件,不仅要记住作用,还要认真思考它们之间是怎么配合的,有一个整体的把握。
对
于
第二部分中
提到的组件,需要记住
它们
的作用,
看到
要能想起来。
在本文中提到了flush以及region的拆分与合并等概念,我将在
下一篇专门对这些架构相关原理进行更深入的介绍。
以上是关于HBase-架构体系的主要内容,如果未能解决你的问题,请参考以下文章
HBase架构核心模块
HBase架构核心模块
HBase架构核心模块
HBase架构核心模块
Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
Hbase入门笔记----架构以及应用介绍