更新時(shí)間:2020-10-28 來源:黑馬程序員 瀏覽量:
HBase是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式數(shù)據(jù)庫,它起源于2006年Google發(fā)表的BigTable論文。在2008年,PowerSet的Chad Walters和Jim Keller受到了該論文思想的啟發(fā),從而把HBase作為Hadoop的子項(xiàng)目來進(jìn)行開發(fā)維護(hù),用于支持結(jié)構(gòu)化的海量數(shù)據(jù)存儲。
HBase的一大優(yōu)點(diǎn)是可在廉價(jià)PC 服務(wù)器上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。HBase的目標(biāo)是存儲并處理大型的數(shù)據(jù),更具體來說是僅需使用普通的硬件配置,就能夠處理由成千上萬的行和列所組成的大型數(shù)據(jù)。HBase分布式數(shù)據(jù)庫具有如下的顯著特點(diǎn):
容量大
HBase分布式數(shù)據(jù)庫中的表可以存儲成千上萬的行和列組成的數(shù)據(jù)。
面向列
HBase是面向列的存儲和權(quán)限控制,并支持獨(dú)立檢索。列存儲,其數(shù)據(jù)在表中是按照某列存儲的,根據(jù)數(shù)據(jù)動(dòng)態(tài)的增加列,并且可以單獨(dú)對列進(jìn)行各種操作。
多版本
HBase中表的每一個(gè)列的數(shù)據(jù)存儲都有多個(gè)Version(版本)。一般地,每一列對應(yīng)著一條數(shù)據(jù),但是有的數(shù)據(jù)會(huì)對應(yīng)多個(gè)版本,例如,存儲個(gè)人信息的HBase表中,如果某個(gè)人多次更換過家庭住址,那么記錄家庭住址的數(shù)據(jù)就會(huì)有多個(gè)版本。
稀疏性
由于HBase中表的列允許為空,并且空列不會(huì)占用存儲空間,因此,表可以設(shè)計(jì)的非常稀疏。
擴(kuò)展性
HBase的底層是依賴于HDFS。當(dāng)磁盤空間不足時(shí),我們可以動(dòng)態(tài)的增加機(jī)器(即DataNode節(jié)點(diǎn)服務(wù))來解決,從而避免像關(guān)系型數(shù)據(jù)庫那樣,進(jìn)行數(shù)據(jù)的遷移。
高可靠性
由于HBase底層使用是的HDFS,而HDFS本身具有備份機(jī)制,所以在Spark集群出現(xiàn)嚴(yán)重問題時(shí),Replication(即副本)機(jī)制能夠保證數(shù)據(jù)不會(huì)發(fā)生丟失或損壞。
雖然HBase是Google Bigtable的開源實(shí)現(xiàn),但是它們之間有很多不同之處,例如:Google BigTable利用GFS作為其文件存儲系統(tǒng),而HBase利用Hadoop HDFS作為其文件存儲系統(tǒng);Google運(yùn)行MapReduce來處理BigTable中的海量數(shù)據(jù),而HBase同樣利用Hadoop的MapReduce來處理HBase中的海量數(shù)據(jù);Google BigTable利用Chubby作為協(xié)同服務(wù),而HBase利用Zookeeper作為協(xié)調(diào)服務(wù)作用。
HBase作為一種分布式數(shù)據(jù)庫,它與傳統(tǒng)數(shù)據(jù)庫相比有很大區(qū)別,下面從存儲模式、表字段以及可延伸性這三個(gè)方面分別進(jìn)行介紹。
(1) 存儲模式
傳統(tǒng)數(shù)據(jù)庫中是基于行存儲的,而HBase是基于列進(jìn)行存儲的。
(2) 表字段
傳統(tǒng)數(shù)據(jù)庫中的表字段不能超過30個(gè),而HBase中的表字段不作限制。
(3) 可延伸性
傳統(tǒng)數(shù)據(jù)庫中的列是固定的,需要先確定列有多少才會(huì)增加數(shù)據(jù)去存儲,而HBase是根據(jù)數(shù)據(jù)存儲的大小去動(dòng)態(tài)的增加列,列是不固定的。
猜你喜歡:
大數(shù)據(jù)的Hadoop是什么,Hadoop的主要發(fā)展過程