HBase架构设计 与 核心概念对象

本文深入解析HBase架构设计,涵盖核心组件如Client、Zookeeper、HMaster、HRegionServer及HRegion的功能与交互机制,并详细阐述了HStore、MemStore、StoreFile、HFile等存储层面的关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、架构设计

在这里插入图片描述

2、核心概念对象

1.Client
发起读写请求的角色
首先hbase查询meta表,找到需要读或写的region区域信息,然后才能读写到这个区域
然后向region对应的HRegionServer上发送读写请求. 每个region由以下信息标识:< 表名,startRowkey,创建时间>
2.Zookeeper
存储Hbase元数据
负责HMaster的选择和主备切换
负责对HRegionServer进行监控
对RootRegion的管理,即对meta表所在数据存储的region的管理 (每个region由以下信息标识:< 表名,startRowkey,创建时间> ,然后RootRegion保存了每个region的信息)
Region管理,普通region的上下线等状态信息管理
分布式SplitWAL任务管理,即当HRegionServer出现宕机后,接收HMaster分配下来的分布式恢复的日志位置,通知到各个健康的HRegionServer来通过获取日志数据做replay操作恢复宕机的HRegionServer中的原数据
3.HMaster
管理用户对Table的增删改查操作
管理HRegionServer,实现其负载均衡,调整Region分布
管理和分配Region:Region分裂后,负责新Region的分配;某一个RegionServer宕机之后,接收到Zookeeper的NodeDelete通知然后开始迁移该RegionServer对应的region
4.HRegionServer
维护本地的Region,并处理客户端对这些Region读写的I/O请求
负责切分本地Region,当StoreFile大小超过阈值,则会出发Region的Split操作,把当前Region切分成2个Region,然后之前的Region会消失,新的2个Region会被HMaster分配到相应的HRegionServer上(此分配时由HMaster实现)
5.HRegion
Table在行的基础上分为多个Region.比如一个Region占前50万行,另一个Region占后50万行.
Region是HBase中分布式存储和负载均衡的最小单元,即不同的region可以分别在不同的RegionServer上,但是同一个Region不会拆分到多个RegionServer上,即一个Region只能属于一个RegionServer,而一个RegionServer包括几个Region看它的大小能含有多少Region
Region按大小分割,每个表一般是只有一个region,但是,随着数据不断增加,region不断增大,当region的某个列族的StoreFile达到一个阈值,HRegion会被切分成为两个新的region
每个region由以下信息标识:< 表名,startRowkey,创建时间>
6.HStore
HStore是HBase存储的核心,主要两部分组成:MemStore(内存)和StoreFile(实际文件)
MemStore就是SortedMemory Buffer,用户写入的数据首先会放在这个内存缓存中,当缓冲区满了以后,会flush到StoreFile中,当StoreFile文件数量达到阈值后会出发Compact操作,将这些StoreFile进行合并,成为一个大的StroeFile.(之后才有了这个大的File如果太大需要切割Region)
合并过程中会删除旧的版本然后出现新的合并版本,因此,所有的更新和删除都是在Compact阶段完成的,这使得用户的写操作只要写入内存就可以立即返回,抱着HBase I/O高性能
当合并后的StoreFile超过阈值,触发HRegion的split操作,一个HRegion分成2个HRegion,旧的会被替代,新的会被HMaster分配到对应的HRegionServer上,可能是当前的HRegionServer也有可能是其他的.
7.MemStore
MemStore是放在内存中,保存新修改的数据,(旧数据到阈值被flush到StoreFile中了),即Key,Values
当MemStore的大小达到阈值(默认128MB)时,数据会被flush到文件
有一个独立线程来负责MemStore的flush操作
8.StoreFile
memStore内存中的数据flush到的文件就是StoreFile
StoreFile底层是以HFile的格式保存的
当StoreFile文件的数量增长到一定阈值后,系统会进行这些文件的合并操作,在合并过程中会进行这些旧的StoreFile小文件的删除操作,然后最终形成更大的StoreFile
9.HFile
当MemStore累计足够的数据时,整个已排序的KeyValue集将被写入HDFS中的新HFile,为顺序写入,所以速度非常快,因为它避免了移动磁盘驱动器磁头
key-value格式的数据存储文件,是一个二进制的文件.
StoreFile就是针对HFile进行了一个轻量级的封装,StoreFile的底层就是HFile
10.Minor Compaction
HBase会自动选择一些较小的StoreFile,并将它们重写成更少且更大的StoreFiles,该过程成为Minor Compaction
通过将较小的文件重写为更少但较大的文件
来减少存储文件的数量,执行合并排序
11.Major Compaction
Major compaction将region下同一Store列族中所有的StoreFile合并,并重写到一个StoreFile中, 这是针对于列族Store来说的,每个列族对应这样的一个StoreFile
在此过程中,删除以删除或过期的Cell,会提升读取性能,由于Major Compaction重写了所有的StoreFile文件,因此,可能发生大量磁盘I/O和网络流量,称为写入放大
Major compaction执行计划可以自动运行,由于写入放大 ,通常计划在周末或晚上等集群负载低的时候进行
12.WAL机制
WriteAhead Log的简称,即先写日志的意思
解决的是HBase写入过程中,当写入MemStore后,
HRegionServer宕机或是其他异常下数据无法持久化的问题,
解决方法(WAL原理)
写入的时候先写日志WAL,再写MemStore,当MemStore写入成功后,客户端写入方则会得到确认成功的消息
这样,若出翔MemStore无法持久化的情况,可以通过replay WAL log的方式进行恢复
13.HLog
HLog(WAL log):HLog记录数据的所有变更,一旦region server 宕机,就可以从log中进行恢复.
物理上是一个sequencefile(序列文件)
每个HRegionServer只有一个HLog,该HLog归该HRegionServer下的所有HRegion共享

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值