1.客户端请求ZK获取存储元数据信息的meta表所在的机器
2.请求meta表所在的机器,下载meta表到客户端并缓存到本地
3.客户端解析meta表,获取到要写的数据所在的RegionServer的机器
4.请求对应的RegionServer下的Region写数据
5.RegionServer接收到数据后会分别在HLog和MemStore上写一份
6.MemStore达到一个阈值后把数据刷写成一个StoreFile文件.若MemStore中的数据有丢失,则可以从HLog上恢复
7.当多个StoreFile文件达到一定的数量,会触发Compact和Major Compaction操作,
8.当Compact后,逐步形成越来越大的StoreFile后,会触发Split操作,把当前的StoreFile分成两个,这里相当于把一个大的Region分割成两个Region.
读取数据流程1.客户端请求ZK获取存储元数据信息的meta表的机器
2.请求meta表所在的机器,下载meta表到客户端并缓存
3.解析meta表,定位要读取的数据所在的RegionServer机器
4.请求RegionServer确定读取的数据在哪个region中
5.先从内存对象中获取数据.如果没有再查看缓存区域 ,缓存中没有再去Hfile中读取数据 , 为了快速的确定数据在哪个Hfile中, Hbase引入了布隆过滤器
6.如果数据是从Hfile中读取,会将数据缓存在缓存区中再返回给客户端,以便下次查询的时候提高查询效率