Hbase 读写流程,寻址流程,路由机制

Hbase 读写流程,寻址流程,路由机制

#hadoop/hbase

读写过程

1.读请求

1.客户端通过zookeeper以及root表和meta表找到目标数据所在的region server
2.联系regionserver查询目标数据
4.region现在memstore总查找,则在storefile中花钱(可能会扫描到很多的storefile—
bloomfilter)

2.写请求过程

1.client向regionserver提交写请求
2,region server找到目标region
3.region检查数据是否与schema一致
4.如果客户端没有指定版本,则获取当前系统时间作为数据版本
5.将更新写入WAL Hlog
6.将更新写入Memstore
7.判断Memstore的是否需要flush为Store文件

细节描述:

hbase使用memStore 和storeFile存储对象表的更新
数据在更新时首先写入log(WAL log)和内存Memstore中。memstore中的数据是排序的,当memstore累积到一定阈值时
就会创建一个新的memstore并且将老的memstore添加到flush队列,,由单独线程flush到磁盘上,成为一个storefile。与此同时,系统会在zookeeper
中记录一个redo point,表示这个时刻之前的更新已经持久化了
当系统出现意外时,可能导致内存(memstore)中的数据丢失,此时使用log(WAL log)来恢复checkpoint之后的数据。

寻址流程

现在假设要从Table2里面插入语条RowKey 是rk10000的数据,那么我们应该遵循以下步骤:
1.从.meta. 表中查询哪个region包含这条数据
2,获取管理这个region的regionserver的地址
3.连接这个regionserver,查到这条数据

系统如何找到row key (或者某个 row key range)所在的region

bigtable 使用三层类似B+ 树的结构来保存region位置
第一层是保存zookeeper里面的文件,他持有root region 的位置
第二层是root region 是 .meta.表中第一个region 其中保存了.meta.表 其他region的位置

通过root region,就可以访问.META.表中的数据
.META. 他是一个特殊的表,保存了hbase中所有数据的region位置信息

说明:

  1. root region永远不会被split,保证了最多需要三次跳转,就能定位到任意region。
  2. .meta.表 表每行保存一个region的位置,rowkey采用表名+表的最后一行代码而成
  3. 为了加快非快访问 .meta.表的全部region都保存在内存中。
  4. client会将查询过的位置信息保存起来,缓存不会主动失效。因此如果client上的缓存全部失效,则需要进行做多6次网络来回
    ,才能定位到正确的region(其中三次用来发现缓存失效,另外三次来获取位置信息)。

路由机制

  1. 到zookeeper上查找root表的位置
  2. root表交互,查找meta表所在的位置
  3. 查找meta表,确定 rowKey所在的region以及regionServer所造在的位置
  4. 根据数据所在的regionserver进行交互
  5. 转发io请求
  6. 查找memstore
  7. 与hdfs进行交互读取数据
  8. 返回结果,首先会写memstore
  9. 将结果返回到客户端
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值