HBase

架构设计

核心概念:

Client:发起读写请求的角色,面向hbase client 编程 

              首先hbase查询Meta表,找到读或写的数据的region区域位置信息

              然后向region对应的HRegionServer上发送读写请求 

zookeeper:存储Hbase源数据放置的位置

                     负责HMaster的选择和主备切换

                     负责对HRS进行监控

                     对RootRegion的管理,挤兑meta表所载数据存储的region的管理

                     region管理普通region的上下线等状态信息管理

                     分布式SplitWAL能力

Hmaster:管理用户对表的增删改查操作

                管理HRS,实现其负载均衡,调整Region分布

                管理和分配Region :fegion分裂后,负责新region的分配

HRegionServer

                维护本地的Region,并处理客户端对这些region读写的io请求

                负责切分本地Region,当StoreFIle大小超过阈值,则会触发分割操作,

                内部管理这一系列HR对象,每一个HR对象对应着表中region        

                Hregion有多个HStore 组成,每一个Hstore对应的一个列族

HRegion:table在行(水平)方向上分隔为多个region

                region是HB中分布式存储和负载均衡的最小单元,不同的region可以分别在不同的ReregionServer上,

每个region由以下信息标识:< 表名,startRowkey,创建时间>

Hstore:HB存储得核心,主要由MenStore和StoreFile组成

MemStore就是 SortedMemory Buffer,⽤户写⼊的数据⾸先会 放在这个内存缓存中,当缓冲区满了以后,flush 到StoreFile (底层是HFile)中,当StoreFile⽂件数达到阀值会触发 Compact操作,将多个StoreFile进⾏合并,合并成⼀个⼤的 StoreFile。 ○ 合并过程中会进⾏版本的合并和数据删除,因此所有的更新和删 除操作(标记删除)都是在compact阶段完成的,这使得⽤户的写 操作只要写⼊内存就可以⽴即返回,保证HBase I/O⾼性能。 当合并之后的StoreFile超过阀值,则会触发HRegion的split操 作,将⼀个HRegion分成2个HRegion,⽼的HRegion会被下线, 新的会被HMaster分配到对应的HRegionServer上,可能是当前 HRegionServer也有可能是其他HRegionServer上。

MemStore:放在内存里的,保存修改的数据即KeyValues

StoreFile:memStore内存中的数据写到文件后就是StoreFIle,底层是以HFile格式保存

Hfile:当MenStore累积到足够的数据是,整个已排序的keyValue集江北写入HDFS中的xinfile,期为顺序写入,速度非常快

MinorCompation:  

                hb会自动选择一些较小的StoreFIle,并将他们重写成更少且更大的StoreFIle,该工程陈伟Minor Compation

Major Compaction:

        将region所有的StoreFile合并,并重写到一个StoreFIle,

Wal:先写日志的意思

HLOG:用来做灾难恢复使用,物理上是一个squencefile,每个HRegionServer只有一个Hlog,该Hlog归该HrefionServer下的所有HRregin共享

Hbase写流程

1)获取。METAdeRootRegion位置信息:

在客户端写进程内,第一次写时,CLient先通过zookeeper获取从MTEA表对应的region位置信息,并加入到进程缓存中,后续再度或再写是,直接读取缓存的meta信息对应的region信息即可。

2)找到数据到写到那个region上

根据上边获取得到的ROotregion位置信息,请求region所在的region server 服务,根据 namespace。表名,rowkey,根据meta表的数据找到写入数据对应的refgion信息。找到小于rowkeu并且最接近rowkey的startkey对象的region,及为目标region信息

3)发起实际的写入请求

向region对应的region server发起写入请求

4)WAL log写入

将插入/更新写去WAL中,当客户端发起put/delete请求是,考虑到写入内存MEnstore会有对视数据的风险,因此在写入缓存钱,hBase会先写入到WriteAheadLog中,那么即使发生宕机,也可以通过WAL 还原初始数据

5)memstore写入与StoreFile落盘

将更新写入menstore中,当增加到一定大小,达到预设的FLushsize阈值是,会触发flush memstore,把menstore中的数据写出到hdfs,生成一个storefile

6)StoreFIle合并

随着storefile文件的不断增多,当增长到一定阈值后,出发compact合并操作,将多个storefile合并成一个,同事进行版本合并和数据删除。

7)Region拆分

单个storefile大小超过一定阈值后,出发split操作,把当前region拆分成两个,新拆分的2个region会被hbasemaster分配到相应的2个regionserver上。

4 hbase读流程

1)获取meta的rootregion信息

客户端读进程内,第一次读,client先通过zookeeper获取从MEta表对应的region位置信息,并加入到进程缓存中,后续再读或再写时,直接读取缓存的meta信息对应的region信息即可。

2)找到数据要写到那个region上

更具上边rootregion的位置信息,请求region server服务,根据namespace,表名 rowkey 根据meta表的数据找到写入数据对应的region信息。找到小于rowkey并且最接近rowkey的startkey对应region,及为目标region信息

3)发起实际的读取请求

向region对应的regionserver发起读取请求

4)先从memstore中查找数据,如果找到则返回

5)再从blockcache中查找数据,如果找到则返回

6)再从storefile中查找数据,如果找到则返回,如果没有找到则返回null

如果是从storefile中读取到的数据,则要写入blockcache后在返回给客户端。

                

       

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值