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