HBase之體系結構(Architecture)
HBase在分散式部署上採用master/slave的方式,主要包含3大功能元件,分別是:RegionServer、MasterServer和ClientLibrary
在分散式儲存上使用的是Hadoop的HDFS子框架
分散式計算功能基於Hadoop的MapReduce實現
1.Region
Region作為HBase的分散式儲存單元包含了一組Row,這些Row的key值在索引排序上是連續的,因此在分散式儲存的時候,RowKey的定義非常重要,要確保具有相同性質的資料是儲存在同一臺機器上,最好的方法就是為他們指定相似的RowKey值
2.RegionServer
在HBase中,RegionServer充當Slave角色,負責與Client進行互動,進行相關的讀寫操作。
3.MasterServer
MasterServer充當master主要有以下職責:
(1).負責將Region分配給RegionServer
(2).動態載入或解除安裝RegionServer
(3).對RegionServer實現負載均衡
(4).管理Schema定義
系統中可能會存在多個master機器,但是這些機器並不會同時執行,而是處於一個競爭的狀態,當正在執行的master機器出現故障的時候,系統會轉移到其他master來接管。
在HBase部署中,Client是不與Master進行互動的,所有的讀寫操作都是通過RegionServer來完成,master在其中起到了負載均衡的作用,當某一個RegionServer載入量較大時,master可以將相應的Region進行重新的切片部署,將壓力分散到多臺機器上。
4.ClientLibrary
客戶端類庫,與RegionServer進行通訊,並且還會快取RegionServer和它所儲存的Region地址,加快下次訪問效率。
另外,當master機器地址發生變動時,client通過ZooKeeper來查詢定位新的master地址,ZooKeeper儲存了所有機器的地址資訊,客戶端需要有ZooKeeper的連線環境(將habse-site.xml加入到客戶端classpath中)
5.CatelogTable
HBase預定義了兩張表格用於儲存資料的分散式儲存地址,分別是 -ROOT- 和 .META.
-ROOT-儲存了.META.資料的訪問地址
.META.儲存了使用者Region的訪問地址
這樣ClientLibrary可通過-ROOT-遍歷到任何Region的地址