HBase的写入流程、HBase的读取流程(HBase查询路由)、-root-表、.meta表 04

1. HBase的写入流程

HBase的写入流程、HBase的读取流程(HBase查询路由)、-root-表、.meta表 04

  • client通过zk, 找到对应的hregionServer
  • 数据会先写入到hlog和memStore中
  • memStore满了后,会flush到一个StoreFile.
  • storeFile达到一定阀值(比如64M), 触发compact,会合并成一个大的storeFile, 同时进行版本合并和数据删除
  • 多个storeFile合并成一个StroeFile, 当这个StroeFile达到一定阀值(比如256M),会触发split操作, 切分为两个storeFile.
  • split操作相当于把HRegion切分为两个HRegion, 旧的hregion下线, 新的storeFile分配到这两个hregion中, hmaster又把这两个hregion分配到相应的hregisonServer上(有了20G的两个hregison)

2. -root-表、.meta表

HBase中的数据当做一本书,数有大目录,详细目录
大目录就是-root-,大目录的地址存放在zk中
小目录就是.meta,小目录的地址存在-root-(大目录中)
HBase的写入流程、HBase的读取流程(HBase查询路由)、-root-表、.meta表 04
HBase中有两张特殊的表,-root-和.meta(元数据表)

  • -root-(书的大目录):记录**.meta表的HRegion信息,-root-本身只有一个HRegion**
  • .meta(书的小目录):记录HBase存储数据的表的HRegion信息,.meta本身可以有多个HRegion,HRegion在哪儿,记录在-root-表中
  • zookeeper中记录了**-root-的HRegion信息**

3. HBase查询路由

HBase的写入流程、HBase的读取流程(HBase查询路由)、-root-表、.meta表 04
HBase的写入流程、HBase的读取流程(HBase查询路由)、-root-表、.meta表 04

  • 访问zookeeper
  • 通过zookeeper存储的-root-的location(书在哪儿), 找到-root-表, 找到了大目录
  • 通过大目录, 找到.meta(小目录, 也就是表的详细元数据信息)
  • 通过小目录, 就能具体找到数据的位置了.

如果喜欢本文章,请用小手点个赞~