HBase詳細原理

讀流程

HBase讀數據流程

  1. Client先訪問zookeeper,從meta表讀取region的位置,然後讀取meta表中的數據。meta中又存儲了用戶表的region信息;
  2. 根據namespace、表名和rowkey在meta表中找到對應的region信息;
  3. 找到這個region對應的regionserver;
  4. 查找對應的region;
  5. 先從MemStore找數據,如果沒有,再到BlockCache裏面讀;
  6. BlockCache還沒有,再到StoreFile上讀(爲了讀取的效率);
  7. 如果是從StoreFile裏面讀取的數據,不是直接返回給客戶端,而是先寫入BlockCache,再返回給客戶端。

寫流程

HBase寫數據流程

  1. Client向HregionServer發送寫請求;
  2. HregionServer將數據寫到HLog(write ahead log)。爲了數據的持久化和恢復;
  3. HregionServer將數據寫到內存(MemStore);
  4. 反饋Client寫成功。

數據flush過程

  1. 當MemStore數據達到閾值(默認是128M,老版本是64M),將數據刷到硬盤,將內存中的數據刪除,同時刪除HLog中的歷史數據;
  2. 並將數據存儲到HDFS中;
  3. 在HLog中做標記點。

數據合併過程

  1. 當數據塊達到3塊,Hmaster觸發合併操作,Region將數據塊加載到本地,進行合併;
  2. 當合並的數據超過256M,進行拆分,將拆分後的Region分配給不同的HregionServer管理;
  3. 當HregionServer宕機後,將HregionServer上的hlog拆分,然後分配給不同的HregionServer加載,修改.META.;
  4. 注意:HLog會同步到HDFS。

關注微信公衆號
簡書:https://www.jianshu.com/u/0278602aea1d
CSDN:https://blog.csdn.net/u012387141

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章