HBase基礎(chǔ)知識(shí),面向列的實(shí)時(shí)分布式數(shù)據(jù)庫(kù)
1、HBase定義
HBase是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù),該技術(shù)來(lái)源于 Fay Chang 所撰寫(xiě)的Google論文“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)”。就像Bigtable利用了Google文件系統(tǒng)(File System)所提供的分布式數(shù)據(jù)存儲(chǔ)一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項(xiàng)目的子項(xiàng)目。HBase不同于一般的關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。另一個(gè)不同的是HBase基于列的而不是基于行的模式。

2、HBase特性:
- 高可靠性
- 高效性
- 面向列
- 可伸縮
- 可在廉價(jià)PC Server搭建大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群
3、HBase與RDBMS的對(duì)比
HBase適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。介于Map Entry 和 DB row之間的一種數(shù)據(jù)存儲(chǔ)方式。而RDBMS是一個(gè)遵循“Codd的十二條規(guī)律”的數(shù)據(jù)庫(kù)。主要區(qū)別如下:
數(shù)據(jù)類型: HBase只有簡(jiǎn)單的字符串類型,它只保存字符串所有的類型都是交給用戶自己處理。關(guān)系型數(shù)據(jù)庫(kù)可以選擇類型
數(shù)據(jù)操作: HBase操作只有很簡(jiǎn)單的插入、查詢等操作,表與表之間是分離的,沒(méi)有join
存儲(chǔ)模式: HBase基于列存儲(chǔ),每個(gè)列族由幾個(gè)文件保存,不同列族的文件是分離的。傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)是基于表格結(jié)構(gòu)和行模式保存的
數(shù)據(jù)維護(hù): HBase更新操作時(shí),舊的版本仍然保留,實(shí)際上時(shí)插入了新數(shù)據(jù)。傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)是替換修改
可伸縮性: HBase能夠容易的增加或者減少硬件數(shù)量
4、數(shù)據(jù)模型

組成部件說(shuō)明:
Row Key:Table主鍵行鍵Table中記錄按照Row Key排序;
Timestamp:每次對(duì)數(shù)據(jù)操作對(duì)應(yīng)的時(shí)間戳,也即數(shù)據(jù)的version number;
Column Family: 列簇,一個(gè)table在水平方向有一個(gè)或者多個(gè)列簇,列簇可由任意多個(gè)Column組成,列簇支持動(dòng)態(tài)擴(kuò)展,無(wú)須預(yù)定義數(shù)量及類型,二進(jìn)制存儲(chǔ),用戶需自行進(jìn)行類型轉(zhuǎn)換。
5、系統(tǒng)架構(gòu)
組成部件說(shuō)明

Client:
使用HBase RPC機(jī)制與HMaster和HRegionServer進(jìn)行通信
Client與HMaster進(jìn)行通信進(jìn)行管理類操作
Client與HRegionServer進(jìn)行數(shù)據(jù)讀寫(xiě)類操作
Zookeeper:
Zookeeper Quorum存儲(chǔ)-ROOT-表地址、HMaster地址
HRegionServer把自己以Ephedral方式注冊(cè)到Zookeeper中,HMaster隨時(shí)感知各個(gè)HRegionServer的健康狀況
Zookeeper避免HMaster單點(diǎn)問(wèn)題
HMaster:
HMaster沒(méi)有單點(diǎn)問(wèn)題,HBase中可以啟動(dòng)多個(gè)HMaster,通過(guò)Zookeeper的Master Election機(jī)制保證總有一個(gè)Master在運(yùn)行
主要負(fù)責(zé)Table和Region的管理工作:
1 管理用戶對(duì)表的增刪改查操作
2 管理HRegionServer的負(fù)載均衡,調(diào)整Region分布
3 Region Split后,負(fù)責(zé)新Region的分布
4 在HRegionServer停機(jī)后,負(fù)責(zé)失效HRegionServer上Region遷移
HRegionServer:
HBase中最核心的模塊,主要負(fù)責(zé)響應(yīng)用戶I/O請(qǐng)求,向HDFS文件系統(tǒng)中讀寫(xiě)數(shù)據(jù)
6、表的設(shè)計(jì)
在表結(jié)構(gòu)設(shè)計(jì)時(shí),HBase里有tall narrow和flat wide兩種設(shè)計(jì)模式,前者行多列少,整個(gè)表結(jié)構(gòu)高且窄;后者行少列多,表結(jié)構(gòu)平且寬;但是由于HBase只能在行的邊界做split,因此如果選擇flat wide的結(jié)構(gòu),那么在特殊行變的超級(jí)大(超過(guò)file或region的上限)時(shí),那么這種行為會(huì)導(dǎo)致compaction,而這樣做是要把row讀內(nèi)存的~~因此,強(qiáng)烈推薦使用tall narrow模式設(shè)計(jì)表結(jié)構(gòu),這樣結(jié)構(gòu)更趨近于keyvalue,性能更好。
本文參考 轉(zhuǎn)載請(qǐng)注明轉(zhuǎn)載自慧都控件網(wǎng)