Hbase的读写寻址过程

1.Hbase的写入流程

Hbase的读写寻址过程_第1张图片

  • 客户端查找对应region 
    客户端根据要操作rowkey,查找rowkey对应的region。查找region的过程为通过zk获取到hbase:meta表所在region。通过查找hbase:meta可以找到要更新的表每个region的startkey、endkey以及所处机器。由于hbase的rowkey有序分布在region上,所以通过每个region的startkey、endkey可以确定当前要操作rowkey的region信息。 
    由于通过zk、hbase:meta查找region信息比较耗时,所以客户端会缓存表的region信息。在请求region失效时,会重新加载表的region信息。
  • regionserver写入WAL文件 
    在将操作写入metastore之前,会将操作先写入到WAL文件中。WAL文件的是顺序保存操作记录的,所有每次新操作直接追加到regionserver对应的WAL文件尾部即可。
  • regionserver写入metastore 
    将操作写入到WAL之后,hbase会将操作写入到metastore中。在metastore是一个排序的跳跃表,能够保证rowkey按照hfile的顺序进行排序。执行快速查找。
  • regionserver最终flush入hfile 
    regionserver将操作写入的hfile不是同步发生的,是需要在metastore的内存达到一定的量(两种情况: 1.metastore的内存达到设置刷新值得90%,2:regionserver上所有region的metastore的内存占用量达到总内存的设置占用量,如0.4)之后,才会将metastore里面所有的操作写入到hfile中。同时会记录已经写入的操作的顺序id,便于WAL的日志清理线程删除WAL中无用日志信息。

2.Hbase的寻址流程

hbase的流程架构如下

https://www.cnblogs.com/steven-note/p/7209398.html


Hbase的读写寻址过程_第2张图片

  • 寻找RegionServer 
    ZooKeeper–> -ROOT-(单Region)–> .META.–> 用户表

  • -ROOT-表 
    表包含.META.表所在的region列表,该表只会有一个Region; 
    Zookeeper中记录了-ROOT-表的location。

  • .META.表 
    表包含所有的用户空间region列表,以及RegionServer的服务器地址。


你可能感兴趣的:(大数据,Hbase)