hbase hbase是apache hadoop的資料庫,基於hdfs檔案系統
random,realtime read/write access to big data
開源、分布式、可擴充套件、面向列
larger tables--billions of rows x millions of columns
不支援表鏈結操作
不支援事務處理
hbase儲存的資料從邏輯上來看就像一張很大的表,其資料列可以根據需要動態增加。
每個單元(cell,由行和列所確定的位置)中的資料根據時間戳可以有不同版本。
在hbase之上還可以使用mapreduce計算模型來處理大規模資料。
hbase實際是map
(row key, column family: qulifier, timestamp) --> content
查詢時,指定:表名-->行鍵-->列族:列名-->版本號
將big table分不同的region儲存,regionsever和datanode在一台主機上。
hmaster為regionserver的主節點,不儲存表的資料,負責:
1、regionserver狀態管理;
2、regionserver負載均衡。
定址機制:hmaster不參與
兩張特殊的表:
-root-:記錄.meta的region資訊,只有乙個。位置去zookeeper查(/hbase/root;//對應值為一台主機)
.meta.:記錄使用者表的region資訊,多個
查詢時,會將路徑快取。
海量資料的秒級簡單查詢
每個列族乙個檔案
按行鍵拆分成乙個個的region
region儲存在region server中
可以啟動多個hmaster,通過zookeeper的master election機制保證總有乙個master執行
zookeeper儲存region的定址入口,監控region server的狀態,儲存hbase的schema
表名+開始/結束行鍵來標記每乙個region
每乙個region儲存乙個表裡面某段連續的資料,從開始主鍵到結束主鍵
資料的儲存:
hregionserver包括兩大部分:hlog部分和hregion部分。
hlog用於儲存日誌,採用先寫日誌的方式(write-ahead log)。
hregion部分包含很多region,儲存實際資料。
每乙個region由很多store組成,每個store儲存的是乙個列族(columnfamily)的資料。
每乙個store包含一塊駐留記憶體的memstore和多個storefile。
資料首先更新到memstore中,達到域值之後再更新到對應的storefile中。
storefile是hbase的最小單元,負責實際資料的儲存。
hbase把同一列族裡面的資料儲存在同乙個目錄下
hbase不涉及資料的直接刪除和更新操作,所有資料通過追加方式進行更新。
資料的刪除和更新在hbase合併(compact)的時候進行。
當store中storefile的數量超過設定域值時將觸發合併操作,將多個storefile檔案合併成乙個storefile。
資料的更新:
更新資料時,資料被分配到對應的hregionserver,首先進行hlog日誌登記。
在操作寫入hlog之後,commit()呼叫才會將其返回給客戶端。
hlog用於故障恢復,若一台hregionserver發生故障,其所維護的regions將被重新分配到新的機器上。
這是hlog會安裝region進行劃分,新的機器在載入region時通過hlog對資料進行恢復。
region的**:
當region超過域值時,hregionserver呼叫hregion.closeandsplit()將其拆分成兩個,
並且報告給hmaster,讓其決定由哪台hregionserver來存放新的region。
這個拆分過程十分迅速,兩個新的hregionserver最初只保留原來hregionfile檔案的引用。
這是舊的hregionserver處於停止服務的狀態,當新的hregion拆分完成並且把引用刪除後,舊的hregion才會刪除
region的合併:
兩個region可以通過呼叫hregionserver.closeandmerger()合併成乙個新的region。
當前版本下,執行此操作需要兩台hregionserver停機。
hmaster:
1、管理使用者對table的增刪改查操作;
2、管理hregionserver的負載均衡;
3、在hregion**後,負責新hregion的分配;
4、在hregionserver停機後,負責hregions的遷移。
root表和meta表:
乙個hregion的鍵:表名+開始主鍵+唯一id(tablename+startkey+regionid),通過這個標識區分不同的region。
此為元資料,meta。
元資料本身也被存放在hregion裡,稱包含元資料的表為meta table,裡面儲存的是region識別符號和伺服器的對映
meta table的regions儲存在root table中。
元資料表和根資料表的每一行都包含乙個列族(info列族):
info:regioninfo//hregion識別符號
info:server//伺服器位址
info:startcode//在hregion伺服器啟動時傳給主伺服器,讓主伺服器確定這個hregion伺服器的資訊沒有更改
hbase啟動時,hmaster先掃瞄根資料表,因為這個表只有乙個region,所以這個region的名字是被寫死的。
有時需要把根資料表分配到乙個hregionserver中。
當根資料表被分配好後,hmaster掃瞄根資料表,獲得元資料表的名字和位置,然後把元資料表分配到不同的hregionserver中。
最後掃瞄元資料表,獲得所有region區域的資訊,把它們分配給不同的hregion伺服器。
客戶端快取已知的root表和meta表,從而提高訪問效率。
zookeeper的作用:
1、儲存root表和meta表的位置;
2、監控集群狀態;
3、保證在同一時刻只有乙個hmaster。
hbase特點:
1、資料型別只有簡單的字串型別
2、資料操作只有很簡單的插入、查詢、刪除、清空等操作,沒有複雜的表與表之間的關係
3、基於列儲存,每個列族由幾個檔案儲存,不同列族檔案是分離的
4、資料維護儲存多個版本
5、可伸縮性
HBase體系結構
hbase的伺服器體系結構遵從簡單的主從伺服器架構,它由hregion伺服器 hregion service 群和hbase master伺服器 hbase master server 構成。hbase master伺服器負責管理所有的hregion伺服器,而hbase中所有的伺服器是通過zooke...
HBase體系結構
hbase hbase是apache hadoop的資料庫,基於hdfs檔案系統 random,realtime read write access to big data 開源 分布式 可擴充套件 面向列 larger tables billions of rows x millions of c...
Hbase的體系結構
包含訪問hbase的介面,並維護表對應的regionserver和region快取實現對hregionserver的快速訪問 master 1 管理集群中所有的regionserver,包括regionserver的負載均衡,regionserver的宕機恢復,region的遷移 2 響應使用者對錶...