1、Client访问zookeeper,获取元数据存储所在的regionserver
2、通过刚刚获取的地址访问对应的regionserver,拿到对应的表存储的regionserver
3、去表所在的regionserver进行数据的添加
4、查找对应的region,在region中寻找列族,先向memstore中写入数据
5、当memstore写入的值变多,触发溢写操作(flush),进行文件的溢写,成为一个StoreFile
6、当溢写的文件过多时,会触发文件的合并(Compact)操作,合并有两种方式(major,minor)
7、当region中的数据逐渐变大之后,达到某一个阈值,会进行裂变(一个region等分为两个region,并分配到不同的regionserver),原本的Region会下线,新Split出来的两个Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。
由此可知HBase只是增加数据,所有的更新和删除操作,都是在Compact阶段做的,所以用户写操作只需要进入到内存即可立即返回,从而保证I/O高性能读写。