W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
HBase是Hadoop的生態(tài)系統(tǒng),是建立在Hadoop文件系統(tǒng)(HDFS)之上的分布式、面向列的數(shù)據(jù)庫(kù),通過利用Hadoop的文件系統(tǒng)提供容錯(cuò)能力。如果你需要進(jìn)行實(shí)時(shí)讀寫或者隨機(jī)訪問大規(guī)模的數(shù)據(jù)集的時(shí)候,請(qǐng)考慮使用HBase!
HBase作為Google Bigtable的開源實(shí)現(xiàn),Google Bigtable利用GFS作為其文件存儲(chǔ)系統(tǒng)類似,則HBase利用Hadoop HDFS作為其文件存儲(chǔ)系統(tǒng);Google通過運(yùn)行MapReduce來處理Bigtable中的海量數(shù)據(jù),同樣,HBase利用Hadoop MapReduce來處理HBase中的海量數(shù)據(jù);Google Bigtable利用Chubby作為協(xié)同服務(wù),HBase利用Zookeeper作為對(duì)應(yīng)。
雖然Hadoop是一個(gè)高容錯(cuò)、高延時(shí)的分布式文件系統(tǒng)和高并發(fā)的批處理系統(tǒng),但是它不適用于提供實(shí)時(shí)計(jì)算;HBase是可以提供實(shí)時(shí)計(jì)算的分布式數(shù)據(jù)庫(kù),數(shù)據(jù)被保存在HDFS分布式文件系統(tǒng)上,由HDFS保證期高容錯(cuò)性,但是再生產(chǎn)環(huán)境中,HBase是如何基于hadoop提供實(shí)時(shí)性呢? HBase上的數(shù)據(jù)是以StoreFile(HFile)二進(jìn)制流的形式存儲(chǔ)在HDFS上block塊兒中;但是HDFS并不知道的HBase用于存儲(chǔ)什么,它只把存儲(chǔ)文件認(rèn)為是二進(jìn)制文件,也就是說,HBase的存儲(chǔ)數(shù)據(jù)對(duì)于HDFS文件系統(tǒng)是透明的。
在下面的表格中,我們對(duì)HDFS與HBase進(jìn)行比較:
HDFS | HBase |
---|---|
HDFS適于存儲(chǔ)大容量文件的分布式文件系統(tǒng)。 | HBase是建立在HDFS之上的數(shù)據(jù)庫(kù)。 |
HDFS不支持快速單獨(dú)記錄查找。 | HBase提供在較大的表快速查找 |
HDFS提供了高延遲批量處理;沒有批處理概念。 | HBase提供了數(shù)十億條記錄低延遲訪問單個(gè)行記錄(隨機(jī)存?。?。 |
HDFS提供的數(shù)據(jù)只能順序訪問。 | HBase內(nèi)部使用哈希表和提供隨機(jī)接入,并且其存儲(chǔ)索引,可將在HDFS文件中的數(shù)據(jù)進(jìn)行快速查找。 |
HBase通過表格的模式存儲(chǔ)數(shù)據(jù),每個(gè)表格由列和行組成,其中,每個(gè)列又被劃分為若干個(gè)列族(row family),請(qǐng)參考下面的圖:
現(xiàn)在我們來看看HBase的邏輯數(shù)據(jù)模型與物理數(shù)據(jù)模型(實(shí)際存儲(chǔ)的數(shù)據(jù)模型):
邏輯數(shù)據(jù)模型:
物理數(shù)據(jù)模型:
下圖顯示了HBase的組成結(jié)構(gòu):
通過上圖我們可以得出Hbase中的每張表都按照一定的范圍被分割成多個(gè)子表(HRegion),默認(rèn)一個(gè)HRegion超過 256M 就要被分割成兩個(gè),由 HRegionServer管理,管理哪些HRegion由HMaster分配。
現(xiàn)在我們來介紹一下HBase中的一些組成部件以及它們起到的作用:
Client:包含訪問HBase的接口,并維護(hù)cache來加快對(duì)HBase的訪問。
Zookeeper:HBase依賴Zookeeper,默認(rèn)情況下HBase管理Zookeeper實(shí)例(啟動(dòng)或關(guān)閉Zookeeper),Master與RegionServers啟動(dòng)時(shí)會(huì)向Zookeeper注冊(cè)。Zookeeper的作用如下:
HRegionServer:用來維護(hù)master分配給他的region,處理對(duì)這些region的io請(qǐng)求;負(fù)責(zé)切分正在運(yùn)行過程中變的過大的region。
HRegion:HBase表在行的方向上分隔為多個(gè)Region。Region是HBase中分布式存儲(chǔ)和負(fù)載均衡的最小單元,即不同的region可以分別在不同的Region Server上,但同一個(gè)Region是不會(huì)拆分到多個(gè)server上。Region按大小分隔,每個(gè)表一般是只有一個(gè)region,當(dāng)region的某個(gè)列族達(dá)到一個(gè)閾值(默認(rèn)256M)時(shí)就會(huì)分成兩個(gè)新的region。
Store:每一個(gè)Region由一個(gè)或多個(gè)Store組成,至少是一個(gè)Store,HBase會(huì)把一起訪問的數(shù)據(jù)放在一個(gè)Store里面,即為每個(gè)ColumnFamily建一個(gè)Store,如果有幾個(gè)ColumnFamily,也就有幾個(gè)Store。一個(gè)Store由一個(gè)memStore和0或者多個(gè)StoreFile組成。Store的大小被HBase用來判斷是否需要切分Region。
StoreFile:memStore內(nèi)存中的數(shù)據(jù)寫到文件后就是StoreFile,StoreFile底層是以HFile的格式保存。
HLog:HLog記錄數(shù)據(jù)的所有變更,可以用來恢復(fù)文件,一旦region server 宕機(jī),就可以從log中進(jìn)行恢復(fù)。
LogFlusher:一個(gè)LogFlusher的類是用來調(diào)用HLog.optionalSync()的。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: