了解HBase

2021-01-15 15:07 更新

HBase 概述

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)。

HBase

HBase處理數(shù)據(jù)

雖然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)是透明的。

HBase與HDFS

在下面的表格中,我們對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ù)模型

HBase通過表格的模式存儲數(shù)據(jù),每個表格由列和行組成,其中,每個列又被劃分為若干個列族(row family),請參考下面的圖:

HBase

現(xiàn)在我們來看看HBase的邏輯數(shù)據(jù)模型與物理數(shù)據(jù)模型(實際存儲的數(shù)據(jù)模型):

邏輯數(shù)據(jù)模型:

HBase

物理數(shù)據(jù)模型:

HBase

HBase 架構(gòu)

下圖顯示了HBase的組成結(jié)構(gòu):

HBase

    通過上圖我們可以得出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的作用如下:

      • 保證任何時候,集群中只有一個master
      • 存儲所有Region的尋址入口
      • 實時監(jiān)控Region server的上線和下線信息。并實時通知給master
      • 存儲HBase的schema和table元數(shù)據(jù)
    • 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()的。

    HBase 的應(yīng)用

    • HBase是用來當有需要寫重的應(yīng)用程序。
    • HBase可以幫助快速隨機訪問數(shù)據(jù)。
    • HBase被許多公司所采納,例如,F(xiàn)acebook、Twitter、Yahoo!、Adobe、OpenPlaces、WorldLingo等等。
    以上內(nèi)容是否對您有幫助:
    在線筆記
    App下載
    App下載

    掃描二維碼

    下載編程獅App

    公眾號
    微信公眾號

    編程獅公眾號