一、hbase的讀操作:
ZooKeeper---meta--regionserver--region--memstore--storefile
1、首先從zookerper找到meta表的region的位置,然后讀取meta表中的數據。而meta中又存儲了用戶表的region信息
2、根據namespace、表名和rowkey根據meta表中的數據找到寫入數據對於的region信息
3、然后找到對於的regionserver
4、查找對應的region
5、先從Memstore找數據,如果沒有,再到StoreFile上讀
二、hbase的寫操作:
ZooKeeper---meta--regionserver--1、Hlog 1、MemStore--storefile
1、首先從zookerper找到meta表的region的位置,然后讀取meta表中的數據。而meta中又存儲了用戶表的region信息
2、根據namespace、表名和rowkey根據meta表中的數據找到寫入數據對於的region信息
3、然后找到對於的regionserver
4、把數據分別寫到Hlog和memstore各一份
4、1當memstore達到閾值后把數據刷成一個storefile文件,當compact后,逐漸形成越來越大的storefile后觸發spilt,
把當前的StoreFile分成兩個,這里相當於把一個大的region分割成兩個region
4、1若MemStore中的數據有丟失,則可以從HLog上恢復,當多個StoreFile文件達到一定的大小后,會觸發Compact合並操作,
合並為一個StoreFile,這里同時進行版本的合並和數據刪除