其他分享
首页 > 其他分享> > HBase深入----读写流程

HBase深入----读写流程

作者:互联网

写流程

在这里插入图片描述

  1. 客户端从ZK获取到存放.META.表的regionserver。
  2. 客户端从对应的regionserver上获取.META.表的信息。并从获取的信息中,找到写数据对应的regionserver,也就是put请求发送到哪台regionserver上。
  3. 客户端找到对应的regionserver,先将对数据的操作写入到HLog中,做预写日志。
  4. 再去region中,将数据写入到MemStore中,这个时候RegionServer就会给客户端返回ack,当MemStore中的数据到达阈值时,就将它的数据写入到缓冲队列,由缓冲队列写入到HFile中。
  5. HFile会将小文件进行合并,防止文件存放到HDFS上时,namenode上的元数据过于臃肿。它也会将过大的文件进行拆分。

读流程

	.META.:存放region信息,表的名字,rowkey的范围,region在哪个regionserver

	-ROOT-:存放的是.META.表的信息
  1. 客户端从zk获取.META.表所在的regionserver。
    0.98之前,.META.的相关信息存放在-ROOT-表中,-ROOT-表存放的位置信息放在ZK中。
    0.98之后,没有-ROOT-表了,ZK中直接存放.META.表所在的位置信息。
  2. 去对应的regionserver读取.META.表,获取region所在信息(region在哪个regionserver上保存的信息)。
  3. 客户端到了regionserver时,先找到region,先去在Block Cache(读缓存)中读取数据,如果读取到了数据就返回。
    BlockCache是读缓冲,BlockCache中存放的是客户端最近读取的数据,使用LRU(最近最少使用)算法,它会定期删除里面的数据,先删除访问频率少的数据,如果访问频率一样,那就删除先进来的数据。
  4. 如果在Block Cache中没读取到数据,就去MemStore 和 Store File(HFile)中查询目标数据,并将Store File中的数据先写入Block Cache,将Block Cache和MemStore中查到的所有数据进行合并,返回时间戳最大的数据。此处所有数据是指同一条数据的不同版本(time stamp)或者不同的类型(Put/Delete)。
  5. 将从文件中查询到的数据块(Block,HFile 数据存储单元,默认大小为 64KB)缓存到Block Cache。
  6. 将合并后的最终结果返回给客户端。

StoreFile Compaction

Region Split

标签:Region,----,regionserver,META,region,HBase,数据,读写,HFile
来源: https://blog.csdn.net/qq_25084029/article/details/121162929