HBase实现原理| 「掘金日新计划 · 12 月更文挑战」

37 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第16天

一、本篇笔记的重点内容

  • HBase的系统架构
  • HBase的功能组件
  • 客户端
  • HMaster

二、详细知识点介绍

HBase的系统架构

HBase采用的是主从模式(Master/Slave)架构,由一个Mastar和多个RegionServer组成。下面是Hbase服务器的角色构成

image.png

l Client

包含访问Hbase的接口并维护cache,加快对Hbase的访问

l Region

表的一部分数据,Hbase是一个会自动分片的数据库,一个Region就相当于关系数据库中的分区表的一个分区。

l RegionServer

1)Region server维护region,处理对这些region的IO请求

2)Region server负责split在运行过程中变得过大的region

l Master

1)为Region server分配region

2)负责Region server的负载均衡

3)发现失效的Region server并重新分配其上的region

4)管理用户对table的增删改查操作

l HDFS

用于和HDFS的交互,也是数据的存储载体。

l ZooKeeper

1)保证任何时候,集群中只有一个Master

2)存贮所有Region的寻址入口

3)实时监控Region server的上线和下线信息,并实时通知给Master

4)存储HBase的schema和table元数据

HBase的功能组件

HBase由客户端、HMaster、HRegionServer、Zookeeper组成。其中的客户端面向使用者;HMaster负责HBase的全局事务调度;HRegionServer负责HBase的具体数据存取,如果为伪分布式部署,则数据存放在本地,如果是分布式部署,则数据存放于HDFS集群;Zookeeper用于实时感知HBase的各服务状态,保持服务与数据的一致性。

各功能组件的具体功能与描述如下。

客户端

HBase的客户端通过RPC的方式与HBase进行交互通信,基本原理是客户端向HBase发起连接,通过借助Zookeeper或直接访问HMaster去检索 要访问的表数据具体位于哪一个HRegionServer节点,而后,向该HRegionServer节点发起具体的数据存取请求。如果访问管理层面的信息,则直接从HMaster处获取。

目前,HBase提供了多种接口,来满足不同的用户访问需求,这些接口包括HBase Shell、API、Thrift、REST、Hive等。这些接口的描述分别如下:

(1)HBase Shell:是HBase自带的命令行工具,能够实现HBase的基础管理功能。

(2)API:HBase提供了基于Java的API编程接口,这也是从事HBase开发最常用的接口方式。

(3)Thrift:提供Thrift序列化技术,用于方便开发人员通过其他编程语言,如”HP、C++、Python等访问HBase。

(4)REST:基于REST的HTTP API的形式也可以去访问HBase,这更大地降低了开发的难度。

(5)Hive:借助Hive的SQL语法特性能及MapReduce的处理能力,在HBase中,可以融合Hive,借助Hive去处理HBase表数据。

 

HMaster

HMaster可以理解为HBase的大脑,负责整个HBase的调度与管理,其主要作用如下:

(1)负责元数据以及数据表的管理,包含表的增删改查、表的定义、表的变更、命名空间的定义等。

(2)负责管理所有的HRegionServer节点,监测各节点的状态,负责各节点的上线、下线,实现节点点的负载均衡。

(3)负责管理HRegion,每一个表由一个或多个HRegion构成,而每个HRegionServer负责管理一个或多个HRegion,HMaster全局管理与分配哪一个HRegion应该放置于哪一台HRegionServer中;对于超出规模的HRegion进行分裂;负责停止服务的HRegionserver中的HRegion向其他节点的迁移等。

(4)负责全局安全策略管理。

(5)负责集群事务管理,如日志管理。

(6)负责与Zookeeper集群交互。

在HBase的架构中,通常HMaster可以由单节点构成,但为了确保可靠性,也可以同时部署于两个以上节点,不过,多节点情形下,同时只能有一个节点处于主服务状态,其他节点要启动备用模式,处理备份的节点会定期与主节点进行信息同步,当主节点发生故障时,通过Zookeeper集群的选举机制,从备用节点中选出新的主服务节点。