1. 程式人生 > >HBASE部分:HBASE的架構

HBASE部分:HBASE的架構

HBASE的架構:

Client

包含訪問HBase的介面並維護cache來加快對HBase的訪問

Zookeeper

保證任何時候,叢集中只有一個master

存貯所有Region的定址入口。

實時監控Region server的上線和下線資訊。

並實時通知Master

儲存HBase的schema和table元資料 

Master

為Region server分配region

負責Region server的負載均衡

發現失效的Region server並重新分配其上的region

管理使用者對table的增刪改操作

RegionServer

Region server維護region,處理對這些region的IO請求

Region server負責切分在執行過程中變得過大的region

Region

HBase自動把表水平劃分成多個區域(region),每個region會儲存一個表裡面某段連續的資料

每個表一開始只有一個region,隨著資料不斷插入表,region不斷增大,當增大到一個閥值的時候,region就會等分會兩個新的region(裂變)

當table中的行不斷增多,就會有越來越多的region。這樣一張完整的表被儲存在多個Regionserver 上。

 每一個region由一個或多個store組成,至少是一個store,hbase會把一起訪問的資料放在一個store裡面,即為每個ColumnFamily建一個store,如果有幾個ColumnFamily,也就有幾個Store。一個Store由一個memStore和0或者多個StoreFile組成。 HBase以store的大小來判斷是否需要切分region。

Memstore 與 storefile

一個region由多個store組成,一個store對應一個CF(列族)

store包括位於記憶體中的memstore和位於磁碟的storefile

Memstore:

region的寫快取。儲存還未寫入HFile的資料,寫入資料前會先做排序,每個region每個CF都會擁有一個Memstore,這就是為什麼CF不能建太多的原因。

寫操作先寫入memstore,當memstore中的資料達到某個閾值,hregionserver會啟動flashcache程序寫入storefile,每次寫入形成單獨的一個storefile

當storefile檔案的數量增長到一定閾值後,系統會進行合併(minor、major compaction),在合併過程中會進行版本合併和刪除工作(majar),形成更大的storefile

當一個region所有storefile的大小和數量超過一定閾值後,會把當前的region分割為兩個,並由hmaster分配到相應的regionserver伺服器,實現負載均衡 客戶端檢索資料,先在memstore找,找不到再找storefile

HRegion是HBase中分散式儲存和負載均衡的最小單元。最小單元就表示不同的HRegion可以分佈在不同的 HRegion server上。

HRegion由一個或者多個Store組成,每個store儲存一個columns family。

每個Strore又由一個memStore和0至多個StoreFile組成。如圖:StoreFile以HFile格式儲存在HDFS上。