1. 程式人生 > >HBase:資料讀寫基本流程

HBase:資料讀寫基本流程

讀寫示意圖


三個基本概念

Zookeeper 
保證任何時候,叢集中只有一個HMaster; 
實時監控HRegion Server的上線和下線資訊,並實時通知給HMaster; 
儲存HBase的schema和table元資料; 
HMaster需要知道哪些HRegionServer是活的,可用的。及HRegionServer的位置資訊,以便管理HRegionServer。這些資訊都有Zookeeper提供!

HMaster 
理論上HMaster可以啟動多個,但是Zookeeper有Master Election機制保證且允許總有且只有一個Master在執行,來負責Table和Region的管理工作。 
管理HRegionServer的負載均衡,調整Region分佈; 
Region Split後,負責新Region的分佈; 
在HRegionServer停機後,負責失效HRegionServer上Region遷移工作。

Region Server 
監控維護Region,處理對這些Region的響應,請求; 
負責切分在執行過程中變得過大的Region。

注意:
  1,Client訪問hbase上資料時並不需要Hmaster參與,資料的讀寫也只是訪問RegioneServer,
    HMaster僅僅維護這table和Region的元資料資訊,負載很低。
  2,HBase是通過DFS client把資料寫到HDFS上的
  3,每一個HRegionServer有多個HRegion,每一個HRegion有多個Store,每一個Store對應一個列簇。
  4,HFile是HBase中真正實際資料的儲存格式,HFile是二進位制格式檔案,StoreFile就是對HFile進行了封裝(其實就是一個東西),
    然後進行資料的儲存。
  5,HStore由MemStore(只有一個)和StoreFile(多個)組成。
  6,HLog記錄資料的變更資訊,用來做資料恢復。

資料讀寫流程

HBase寫資料流程
1,Client先訪問zookeeper,從meta表獲取相應region資訊,然後找到meta表的資料
2,根據namespace、表名和rowkey根據meta表的資料找到寫入資料對應的region資訊
3,找到對應的regionserver
4,把資料分別寫到HLog和MemStore上一份
4,MemStore達到一個閾值後則把資料刷成一個StoreFile檔案。(若MemStore中的資料有丟失,則可以總HLog上恢復)
5,當多個StoreFile檔案達到一定的大小後,會觸發Compact合併操作,合併為一個StoreFile,(這裡同時進行版本的合併和資料刪除。)
6,當Storefile大小超過一定閾值後,會把當前的Region分割為兩個(Split),並由Hmaster分配到相應的HRegionServer,實現負載均衡

HBase讀資料流程
1,Client先訪問zookeeper,從meta表讀取region的位置,然後讀取meta表中的資料。meta中又儲存了使用者表的region資訊。
2,根據namespace、表名和rowkey在meta表中找到對應的region資訊
3,找到這個region對應的regionserver
4,查詢對應的region
5,先從MemStore找資料,如果沒有,再到StoreFile上讀(為了讀取的效率)。