一、写流程
(1) Client通过Zookeeper的调度,向RegionServer发出写数据请求,在Region中写数据。
(2) 数据被写入Region的MemStore,直到MemStore达到预设阈值。
(3) MemStore中的数据被Flush成一个StoreFile。
(4) 随着StoreFile文件的数量增多,会达到数量阈值,然后触发Compact合并操作,将多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除。
(5) StoreFiles在不断的Compact合并操作下会达到文件大小阈值,会触发Split操作,把当前Region Split成2个新的Region。父Region会下线,新Split出的2个子Region会被HMaster分配到相应的RegionServer上,使得原先1个Region的压力得以分流到2个Region上。
二、读流程
(1) client在发送读操作时,会通过寻址流程找到对应的region.
(2) 会先遍历memstore。然后查询对应的storefile文件.
(3) 如果从storefile中查询到数据,就会与从写内存中查询的数据,一起返回给客户端,同时将该文件中的查询到的数据保存读内中。以便下次访问。