大数据学习之 HBase 原理学习(一)

HBase 原理

HBase 读写流程

  1. Client 访问 zk ,根据 ROOT 表获取 meta表所在的Region的位置信息,并将该位置信息写入 Client Cache,(将元数据,Region位置预读取到 Client Cache 中,可以加快查询)
  2. Client 读取 meta 表,再根据 meta 表中查询得到的 Namespace、表名、RowKey等相关信息,获取将要写入Region的位置信息,最终client端会将meta 表写入Client Cache。
  3. HBase使用memstore和storefile存储对表的更新操作,数据在更新的时候首先写入hlog和memstore,memstore是排序的
  4. 当memstore积累到一定的阈值时,就会创建一个新的memstore,并将老的memstore加入flush队列,由单独的线程的flush到磁盘上成为一个StoreFile,系统zookeeper中记录一个checkpoint,表示这个时刻之前的数据变更已经持久化,发生故障只需要恢复到checkpoint的数据,StoreFile是只读的,一旦创建就不可修改,当一个store的storefile达到一定的阈值后,就会进行一次合并操作,将对同一个key的修改合并到一起,同时进行版本合并和数据删除,形成一个大的storefile,当storefile的大小达到一定阈值后,又会对storefile进行切分操作,等分为两个storefile
  5. HBase中只有添加数据,所有的更新和删除都是在后续的合并中进行的,使得用户的写操作只要进入内存就可以立刻返回,实现HBase的高速存储

架构分析:

HMaster

1. 负责管理 HBase 的元数据,表结构,

2. 表的 Region 信息 负责表的创建,删除和修改

3. 负责HRegionServer分配Region,分配后将元数据写入相应的位置

HRegionServer

1. 含有多个 HRegion

2. 处理 Client 端的读写请求(根据HMaster返回的元数据找到对应的HRegionServer)

3. 管理 Region 的 Split分裂、StoreFile 的 Compaction合并

HRegion

1. 一个 HRegion 里会有1到多个Store

2. HRegionServer 维护一个HLog 

3. HRegion 是分布式存储和负载的最小单元

4. 表通常被保存在多个 HRegionServer 的多个 Region 中

Store

1. Store 是存储在磁盘的最小单元,由于内存中的MemStore和磁盘中的若干StoreFile组成

2. 一个 Store 里会有一个或多个StoreFile 和 一个MemStore

3. 每个Store存储一个列族

Zookeeper

1. 分布式管理服务,来维护集群中所有服务的状态 ,(一致性协议至少要三台以上的实例)

 

  
写操作

1. Client 通过访问zk的调度,向RegionServer发出写的请求

2. 数据被写入Region的Memstore,直到MemStore达到预设阈值

3. Memstore中的数据被flush成一个StoreFile

4. 随着StoreFile文件的不断增多,达到设定阈值的后,触发Compact合并操作,并将Compact合并 压缩,即多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除

5. StoreFile 通过不断的Compact合并操作,逐步形成越来越大的StoreFile

6. 当个StoreFile大小超过一定阈值后,触发Split操作,把当前的Region Split成2个新的Region,父Region会下线,新Split出的2个子Region会被HMaster分配到相应的RegionServer上

读操作

1. Client访问Zookeeper,查找-ROOT-表,获取.META.表信息

2. 从.META.表查找,获取存放在目标数据的Region信息,从而找到对应的RegionServer

3. 通过RegionServer获取需要查找的数据

4. RegionServer的内存划分为MemeStore和BlockCache两部分,MemStore主要用于写数据,BlockCache主要用于读数据,请求先到MemStore中,查不到再到BlockCache中查,再查不到就会到StoreFile,并把读的结果放入到BlockCache中

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值