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