HBase 的读写流程

HBase 建表由Master处理

  一、建表的请求是通过RPC的方式由Client发送到Master。(建表时应该定义合理的Schema,设置合理的Region数量 —— 预分区,通过预先创建一些空的Region,这样当数据写入HBase时,会按照Region分区情况,在集群内做数据的负载均衡,加快批量写入速度。)
  二、Master侧接收到Client侧的建表请求以后,一些主要操作包括:
    1、 生成每一个Region的描述信息对象HRegionInfo,这些描述信息包括:Region ID, Region名称,Key范围,表名称等信息。
    2、 生成每一个Region在HDFS中的文件目录。
    3、将HRegionInfo信息写入到记录元数据的hbase:meta表(存储了所有用户HRegion的位置信息,存储在ZooKeepe)中。
  三、新创建的Regions由Region AssignmentManager负责分配到各个RegionServer,具体的分配计划是由LoadBalancer来提供的。

HBase 数据写入流程

  1) 客户端访问 ZooKeeper,从 Meta 表得到写入数据对应的 Region 信息和相应 的Region 服务器。
  2) 客户端访问相应的 Region 服务器,把数据分别写入 HLog(WAL) 和 MemStore。MemStore 数据容量有限,当达到一个阈值后,则把数据写入磁盘文件 StoreFile 中,在 HLog 文件中写入一个标记,表示 MemStore 缓存中的数据已被写入 StoreFile 中。如果 MemStore 中的数据丢失,则可以从 HLog 上恢复。
  3) 当多个 StoreFile 文件达到阈值后,会触发 Store.compact() 将多个 StoreFile 文件合并为一个 大文件。
在这里插入图片描述

HBase 数据读取流程

  1) 客户端访问zookeeper获取meta表(主要记录表的元信息),然后从meta表中获取想要操作的region位置,并将meta缓存在客户端,用于后续的操作(避免每次读写都要去访问ZooKeeper或者meta Region,当一个RegionServer宕机后,客户端需要重新获取meta信息进行缓存)
  2) 客户端向对应RegionServer建立连接并发送读取数据的请求,Region接收请求后,先从 MemStore 查找数据,如果查不到就会到BlockCache中查,如果再查不到,就会到磁盘中 StoreFile 上读取,然后将数据返回给客户端。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值