你聽過Hbase分布式存儲系統(tǒng)嗎?
大家也許聽說過大數(shù)據(jù),對大數(shù)據(jù)的第一印象可能是很多數(shù)據(jù)的聚集,那你們聽說過大數(shù)據(jù)中的Hbase嗎?或許很多人不明白,什么是Hbase?我們一起來探索hbase的真面目。

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

二、Hbase起源
HBase是一個開源的非關(guān)系型分布式數(shù)據(jù)庫,它參考了谷歌的BigTable建模,實現(xiàn)的編程語言為Java。它是Apache軟件基金會的Hadoop項目的一部分,運行于HDFS文件系統(tǒng)之上,為 Hadoop 提供類似于BigTable 規(guī)模的服務(wù)。因此,它可以容錯地存儲海量稀疏的數(shù)據(jù)。
HBase是一個高可靠、高性能、面向列、可伸縮的分布式數(shù)據(jù)庫,是谷歌BigTable的開源實現(xiàn),主要用來存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。HBase的目標(biāo)是處理非常龐大的表,可以通過水平擴展的方式,利用廉價計算機集群處理由超過10億行數(shù)據(jù)和數(shù)百萬列元素組成的數(shù)據(jù)表

那么有同學(xué)會有疑惑,Hbase與傳統(tǒng)的數(shù)據(jù)有什么不同呢?
1、數(shù)據(jù)類型:關(guān)系數(shù)據(jù)庫采用關(guān)系模型,具有豐富的數(shù)據(jù)類型和存儲方式,HBase則采用了更加簡單的數(shù)據(jù)模型,它把數(shù)據(jù)存儲為未經(jīng)解釋的字符串。
2、數(shù)據(jù)操作:關(guān)系數(shù)據(jù)庫中包含了豐富的操作,其中會涉及復(fù)雜的多表連接。HBase操作則不存在復(fù)雜的表與表之間的關(guān)系,只有簡單的插入、查詢、刪除、清空等,因為HBase在設(shè)計上就避免了復(fù)雜的表和表之間的關(guān)系。
3、存儲模式:關(guān)系數(shù)據(jù)庫是基于行模式存儲的。HBase是基于列存儲的,每個列族都由幾個文件保存,不同列族的文件是分離的。
4、數(shù)據(jù)索引:關(guān)系數(shù)據(jù)庫通??梢葬槍Σ煌袠?gòu)建復(fù)雜的多個索引,以提高數(shù)據(jù)訪問性能。HBase只有一個索引——行鍵,通過巧妙的設(shè)計,HBase中的所有訪問方法,或者通過行鍵訪問,或者通過行鍵掃描,從而使得整個系統(tǒng)不會慢下來。
5、數(shù)據(jù)維護:在關(guān)系數(shù)據(jù)庫中,更新操作會用最新的當(dāng)前值去替換記錄中原來的舊值,舊值被覆蓋后就不會存在。而在HBase中執(zhí)行更新操作時,并不會刪除數(shù)據(jù)舊的版本,而是生成一個新的版本,舊有的版本仍然保留。
6、可伸縮性:關(guān)系數(shù)據(jù)庫很難實現(xiàn)橫向擴展,縱向擴展的空間也比較有限。相反,HBase和BigTable這些分布式數(shù)據(jù)庫就是為了實現(xiàn)靈活的水平擴展而開發(fā)的,能夠輕易地通過在集群中增加或者減少硬件數(shù)量來實現(xiàn)性能的伸縮。

四、Hbase的系統(tǒng)架構(gòu)

Hbase就先介紹到這里,當(dāng)然Hbase還有好多需要我們掌握的知識,更多重要的知識點可以觀看視頻哦~有什么疑問的小伙伴可以在評論區(qū)告訴我哦~
