小记--------hbase数据库读写流程

时间:2021-10-23 04:38:06

  1. hbase读写流程

读过程

  1. client先从缓存中定位region位置,如果缓存中没有region位置,则从zookeeper的-ROOT-表,获取-ROOT-所在regionserver位置
  2. 通过查询-ROOT-的region服务器获取含有.META.表所在regionserver地址
  3. Client会将保存着regionserver位置信息的元数据表.META.进行缓存,然后在表中确定待检索rowkey所在regionserver信息。
  4. Client会向在.META.表中确定的regionserver发送真正的数据读取请求
  5. 先从memstore中查找,如果没有再到storefile中查找

 

写过程

  1. client先从缓存中定位region,如果缓存中没有region位置信息则需要访问zookeeper,从.META.表获取要写入的region信息
  2. 找到小于rowkey并且最接近rowkey的startkey对应的region
  3. 将更新的数据首先写入WAL(HLog)防止中途发生宕机也可以通过WAL还原初始数据
  4. 将更新写入memstore中,当memstore的大小达到设定的flush memstore的阈值时,会触发flush memstore操作,把memstore的数据写入到hdfs,生成一个HFile文件
  5. 随着HFile文件的不断增多,当达到一定的阈值之后,触发Compact合并操作(分为两种minor Compaction、major Compaction)
  6. HFile文件通过不断的compact合并操作,逐步形成越来越大的storefile
  7. 当单个storefile大小超过一定的阈值后,触发split操作,把当前的region拆分为两个,新拆分的region会被hbase master分配到相应的两个regionserver上