HBase-简介及架构

1、简介

1.1、HBase简介

– HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、 实时读写的分布式数据库 

– 利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理 HBase中的海量数据,利用Zookeeper作为其分布式

协同服务

– 主要用来存储非结构化和半结构化的松散数据(列存NoSQL数据库)

1.2、HBase角色

1.2.1、HMaster

1) 监控 RegionServer

2) 处理 RegionServer 故障转移

3) 处理元数据的变更

4) 处理 region 的分配或移除

5) 在空闲时间进行数据的负载均衡

6) 通过 Zookeeper 发布自己的位置给客户端

1.2.2、RegionServer

1) 负责存储 HBase 的实际数据

2) 处理分配给它的 Region

3) 刷新缓存到 HDFS

4) 维护 HLog

5) 执行压缩

6) 负责处理 Region 分片

1.3、HBase组件

1) Write-Ahead logs

HBase 的修改记录,当对 HBase 读写数据的时候,数据不是直接写进磁盘,它会在内存中 保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率 引起数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件中, 然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。

2) HFile

这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。

3) Store

HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族。

4) MemStore

顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在 WAL 中之后,RegsionServer 会在内存中存储键值对。

5) Region

Hbase 表的分片,HBase 表会根据 RowKey 值被切分成不同的 region 存储在 RegionServer 中, 在一个 RegionServer 中可以有多个不同的 region。

2、架构

HBase 一种是作为存储的分布式文件系统,另一种是作为数据处理模型的 MR 框架。因为日 常开发人员比较熟练的是结构化的数据进行处理,但是在 HDFS 直接存储的文件往往不具 有结构化,所以催生出了 HBase 在 HDFS 上的操作。如果需要查询数据,只需要通过键值 便可以成功访问。

架构图如下图所示:

HBase 内置有 Zookeeper,但一般我们会有其他的 Zookeeper 集群来监管 master 和 regionserver,Zookeeper 通过选举,保证任何时候,集群中只有一个活跃的 HMaster,HMaster 与 HRegionServer 启动时会向 ZooKeeper 注册,存储所有 HRegion 的寻址入口,实时监控 HRegionserver 的上线和下线信息。并实时通知给 HMaster,存储 HBase 的 schema 和 table 元数据,默认情况下,HBase 管理 ZooKeeper 实例,Zookeeper 的引入使得 HMaster 不再是 单点故障。一般情况下会启动两个 HMaster,非 Active 的 HMaster 会定期的和 Active HMaster 通信以获取其最新状态,从而保证它是实时更新的,因而如果启动了多个 HMaster 反而增加 了 Active HMaster 的负担。

一个 RegionServer 可以包含多个 HRegion,每个 RegionServer 维护一个 HLog,和多个 HFiles 以及其对应的 MemStore。RegionServer 运行于 DataNode 上,数量可以与 DatNode 数量一致, 请参考如下架构图:

猜你喜欢

转载自blog.csdn.net/liberty12345678/article/details/85678181