HBase讀寫詳細流程
HBase定義
HBase 是一個高可靠、高效能、面向列、可伸縮的分散式儲存系統,利用Hbase技術可在廉價PC Server上搭建大規模結構化儲存叢集。
HBase 是Google Bigtable 的開源實現,與Google Bigtable 利用GFS作為其檔案儲存系統類似, HBase 利用Hadoop HDFS 作為其檔案儲存系統;Google 執行MapReduce 來處理Bigtable中的海量資料, HBase 同樣利用Hadoop MapReduce來處理HBase中的海量資料;Google Bigtable 利用Chubby作為協同服務, HBase 利用Zookeeper作為對應。
HBase架構圖
· HMaster連結Zookeeper目的:HMaster需要知道哪些HRegionServere是活的及HRegionServer所在的位置,然後管理HRegionServer。
· HBase內部是通過DFS client把資料寫到HDFS上的
· 每一個HRegionServer有多個HRegion,每一個HRegion有多個Store,每一個Store對應一個列簇。
· HFile是HBase中KeyValue資料的儲存格式,HFile是Hadoop的二進位制格式檔案,StoreFile就是對HFile進行了封裝,然後進行資料的儲存。
· HStore由MemStore
· HLog記錄資料的所有變更,可以用來做資料恢復。
· hdfs對應的目錄結構為:namespace->table->列簇->列->單元格
HBase架構中各模組功能
Client
整個HBase叢集的訪問入口;
使用HBase RPC機制與HMaster和HRegionServer進行通訊;
與HMaster進行通訊進行管理表的操作;
與HRegionServer進行資料讀寫類操作;
包含訪問HBase的介面,並維護cache來加快對HBase的訪問
Zookeeper
保證任何時候,叢集中只有一個HMaster;
存貯所有HRegion的定址入口;
實時監控
儲存HBase的schema和table元資料;
Zookeeper Quorum儲存表地址、HMaster地址。
HMaster
HMaster沒有單點問題,HBase中可以啟動多個HMaster,通過Zookeeper的Master Election機制保證總有一個Master在執行,主負責Table和Region的管理工作。
管理使用者對錶的建立、刪除等操作;
管理HRegionServer的負載均衡,調整Region分佈;
Region Split後,負責新Region的分佈;
在HRegionServer停機後,負責失效HRegionServer上Region遷移工作。
HRegion Server
監控維護HRegion,處理對這些HRegion的IO請求,向HDFS檔案系統中讀寫資料;
負責切分在執行過程中變得過大的HRegion。
Client訪問hbase上資料的過程並不需要master參與(定址訪問Zookeeper和HRegion Server,資料讀寫訪問HRegione Server),HMaster僅僅維護這table和Region的元資料資訊,負載很低。
HBase寫資料流程
1、Client先訪問zookeeper,從meta表獲取相應region資訊,然後找到meta表的資料
2、根據namespace、表名和rowkey根據meta表的資料找到寫入資料對應的region資訊
3、找到對應的regionserver
4、把資料分別寫到HLog和MemStore上一份
5、MemStore達到一個閾值後則把資料刷成一個StoreFile檔案。(若MemStore中的資料有丟失,則可以總HLog上恢復)
6、 當多個StoreFile檔案達到一定的大小後,會觸發Compact合併操作,合併為一個StoreFile,(這裡同時進行版本的合併和資料刪除。)
7、 當Storefile大小超過一定閾值後,會把當前的Region分割為兩個(Split),這裡相當於把一個大的region分割成兩個region,並由Hmaster分配到相應的HRegionServer,實現負載均衡。
HBase讀取資料流程
1、Client先訪問zookeeper,從zookeeper中找到meta表region的位置,然後讀取meta表中的資料。meta中又儲存了使用者表的region資訊。
2、根據namespace、表名和rowkey在meta表中找到對應的region資訊
3、找到這個region對應的regionserver
4、查詢對應的region
5、先從MemStore找資料,如果沒有,再到StoreFile上讀(為了讀取的效率)。