Hbase的读写操作流程

写操作流程

  1. client通过zookeeper的调度,向相应的RegionServer发出写请求,在相应的region中写数据。
  2. 数据先写入hlog,然后写入memstore,知道memstore到达一定的阈值。
  3. memstore到达阈值后,会创建一个新的memstore,并将老的添加到flush队列,由单独的线程flush到磁盘上,成为一个storeFile。与此同时,zookeeper会记录一个checkpoint点,表示这个时间之前的数据已经持久化了,到系统故障导致memstore丢失的时候,可以通过hlog进行数据的恢复。
  4. 随着storeFile的不断增多,当其数量达到一定的阈值之后,会触发Compact操作,将多个StoreFile合并成一个,对同一个key的修改合并到一起,同时对版本进行合并删除。
  5. 通过不断合并,当StoreFile到达一定大小的时候,会触发Split操作,把当前Region的文件,分成两个文件,放到相应的Region,此时父Region会下线。这样使得原先1个Region的压力得以分流到2个Region上。

读操作流程

  1. client访问zookeeper,通过读取meta表,读取region信息。
  2. 根据namespace、表名和rowkey在meta表中找到对应的region信息。
  3. 通过region信息找到相应的RegionServer。
  4. 通过RegionServer找到相应的数据存放的Region,并读取数据。
  5. Regionserver的内存分为MemStore和BlockCache两部分,MemStore主要用于写数据,BlockCache主要用于读数据。读请求先到MemStore中查数据,查不到就到BlockCache中查,再查不到就会到StoreFile上读,并把读的结果放入BlockCache。

你可能感兴趣的:(Hbase)