HBASE源码学习一架构和组件

HBASE架构

HBASE是一个基于Hadoop HDFS存储的分布式数据库,与行存储的关系型数据库(如MySQL、Excel)不同,HBASE中的数据为列式存储,在进行大规模的数据查询操作时效率很高。

HBASE表只能进行插入、查询、删除和清空操作,无法对已经存储的数据进行更新,但可以通过保存多个版本号来存储历史数据。HBASE表与表之间没有联系,不涉及表之间的连接操作。

HBASE的架构如下图所示,是一个典型的Master/Slave架构。其中独立的组件有HMaster、HRegionServer、Zookeeper、Client,下面将一一介绍这几个组件。
HBASE架构图

HMaster

HMaster负责管理HBASE表的创建和删除、HRegion的调度、更新和存储HRegion的状态,及其他与HRegion元信息相关的处理操作。

HMaster启动过程

启动HMaster后, 初始化文件系统FileSystem,然后从FileSystem中读取表的元信息,预加载HBase Table Descriptors,接着初始化管理RegionServer信息的ServerManage和ServerCrashProcedure(并不启动),为恢复CrashServer的恢复做准备,然后启动分配Region的AssignmentManager线程,更新Zookeeper中表的元信息,然后初始化协处理器和master中的一些服务线程,然后等待Region Server存活汇报,等Region Server汇报上来后,开始分配HRegion到各个RegionServer上。

当集群中Region数量特别多的时候,加载HTD和分配Region的速度比较慢,此时耐心等候即可。生成环境中,25万Region的集群,整个启动过程需要一个小时左右。

为保障集群稳定,一般启动两个HMaster,当一个为活动状态时,另一个则为Backup状态。有时候遇到一些Region状态不一致的情况,可以通过切换HMaster来解决。切换HMaster的时间比重启整个集群的时间要短很多。

HRegionServer

Region Server负责管理HMaster分配过来的所有Region,一个Region的所有数据读写都在其所在的Region Server上完成。Region Server管理Region的分裂、StoreFile的压缩合并。Region Server上可以管理多个Region,因此当QPS很高时,一个Region Server上Region数量不能太多,一般200以内为宜。

当HMaster发出Compact命令时,真正的压缩操作也是在Region Server上完成,Major Compact特别占用网络和IO,会对Region Server造成高负载,因此一般都是关闭自动Major Compact,在半夜空闲时间手动执行。

一个HBASE集群可以有多个Region Server,但过多Region Server会对HMaster造成高负载,所以一般不超过1000台机器,通常HBASE集群都是几十台机器小集群部署。

Zookeeper

ZK存储当前集群的Master/Region Server信息,Region Server在表中创建临时节点,HMaster通过这些临时节点发现存活的Region Server。

当发生Region Server负载高,可以正常与ZK通信,但Region读写异常的时候,可以直接重启Region Server,当之前的Region Server节点长时间未发送心跳时,ZK上之前的节点将会被删除,HMaster发生一次SCP。

Client

当发生HBASE读写时,HBASE客户端与ZK建立通信连接,获取Meta表所在的位置,然后访问Meta表所在的Region Server,获取Meta表中Region信息并缓存到本地,接着根据Meta表中Region信息获取要访问的Region Server,然后跟Region Server通信,对Region发起读写请求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值