HBase架構設計
一.Client
包含訪問HBase的接口並維護cache來加快對HBase的訪問。
二.Zookeeper
1.保證任何時候,集群中只有一個master。
2.存儲所有Region的尋址入口。
3.實時監控Region server的上線和下線信息,並實時通知Master。
4.存儲HBase的schema和table元數據。
三.Master
1.為Region server分配region。
2.負責Region server的負載均衡。
3.發現失效的Region server並重新分配其上的region。
4.管理用戶對table的增刪改操作。
四.Region Server
1.Region server維護region,處理對這些region的I/O請求。
2.Region server負責切分在運行過程中變得過大的region。
五.Region
1.HBase自動把表水平劃分成多個區域【region】,每個region會保存一個表裏面某段連續的數據。
2.每個表一開始只有一個region,隨著數據不斷插入表,region不斷增大,當增大到一個閾值大的時候,region就會等分為兩個新的region【裂變】。
3.當table的行不斷增多,就會有越來越多的region。這樣一張完整的表被保存在多個Region server上。
六.Memstore與storefile
1.一個region由多個store組成,一個store對應一個cf【列族】。
2.store包括位於內存中的memstore和位於磁盤的storefile,寫操作先寫入memstore,當memstore中的數據達到某個閾值,hregionserver會啟動flashcache進程寫入storefile,每次寫入形成一個單獨的storefile。
3.當storefile文件的數量增長到一定閾值後,系統會進行合並【minor compaction:相鄰兩個小文件之間合並,不影響HBase提供服務。major compaction: 在合並過程中會進行版本合並和刪除操作,影響HBase提供服務】,形成更大的storefile。
4.當一個region所有storefile的大小和數量超過一定閾值後,會把當前的region分割為兩個,並由hmaster隨機分配到相應的regionserver服務器,實現負載均衡。
5.客戶端檢索數據,先在memstore中找,找不到再去storefile中找。
備註:
1.HRegion是HBase中分布式存儲和負載均衡的最小單位。HRegion可以分布在不同的HRegion server上。
2.HRegion由一個或多個store組成,每個store保存一個列族。
3.每個store又有一個memStore和0到多個storeFile組成。
HBase架構設計