大數(shù)據(jù)時代的結(jié)構(gòu)化存儲--HBase

迄今,相信大家肯定聽說過 HBase,但是對于 HBase 的了解可能僅僅是它是 Hadoop 生態(tài)圈重要的一員,是一個大數(shù)據(jù)相關(guān)的數(shù)據(jù)庫技術(shù)。
今天我?guī)銈円黄痤I(lǐng)略一下 HBase 體系架構(gòu),看看它是如何大規(guī)模處理海量數(shù)據(jù)。

一、什么是 HBase?

關(guān)于 HBase 的實現(xiàn),是基本遵循 Bigtable 的論文。HBase 是一個面向列的分布式數(shù)據(jù)庫,也是個非關(guān)系型數(shù)據(jù)庫系統(tǒng)(NoSQL),它建立在 Hadoop 文件系統(tǒng)之上。面向列的數(shù)據(jù)庫是將數(shù)據(jù)表存儲為數(shù)據(jù)列的一部分而不是數(shù)據(jù)行的數(shù)據(jù)庫。

HBase 是一個分布式,持久,嚴(yán)格一致的存儲系統(tǒng),具有接近最佳的寫入 I / O 通道飽和度和出色的讀取性能。而且 HBase 只考慮單個索引,類似于 RDBMS 中的主鍵,提供服務(wù)器端實現(xiàn)靈活的二級索引解決方案。

二、為什么使用 HBase?

HBase 是 Hadoop 生態(tài)圈中重要的一環(huán),用于存儲,管理和處理數(shù)據(jù)。我們知道 Hadoop HDFS 是無法處理高速隨機(jī)寫入和讀取,也無法在不重寫文件的情況下對文件進(jìn)行修改。HBase 正好解決了 HDFS 的缺點,因為它使用優(yōu)化的方式快速隨機(jī)寫入和讀取。此外,隨著數(shù)據(jù)呈指數(shù)增長,關(guān)系數(shù)據(jù)庫無法提供更好性能去處理海量的數(shù)據(jù)。HBase提供可擴(kuò)展性和分區(qū),以實現(xiàn)高效的存儲和檢索。

三、HBase 體系架構(gòu)

image

我們先來看看 HBase 的架構(gòu)設(shè)計,由上圖我們可以得知,HBase 主要由以下及部分組成:

Master

對 Region 進(jìn)行負(fù)載均衡,分配到合適的 HRegionServer。
所有 HRegion 的信息,包括存儲的 Key 值區(qū)間、所在 HRegionServer 地址、訪問端口號等,都記錄在 HMaster 服務(wù)器上。

ZooKeeper

HBase 會啟動多個 HMaster,并通過 ZooKeeper 選舉出一個主服務(wù)器。

Region Server

負(fù)責(zé)實際數(shù)據(jù)的讀寫. 當(dāng)訪問數(shù)據(jù)時, 客戶端與 HBase 的 Region Server 直接通信。

Region: HBase 中的數(shù)據(jù)都是按 Rowkey 進(jìn)行排序的,對這些按 Rowkey 排序的數(shù)據(jù)進(jìn)行水平切分,每一片稱為一個 Region。 當(dāng)一個 Region 中數(shù)據(jù)量太多時,這個 Region 連同 HFile 會分裂成兩個 Region,并根據(jù)集群中服務(wù)器負(fù)載進(jìn)行遷移。

五、HBase 如何尋址?

如你所知,Zookeeper 存儲 META 表。每當(dāng)客戶端對 HBase 的讀取或?qū)懭胝埱髸r,就會發(fā)生以下操作:

1、 客戶端從 ZooKeeper 中檢索 META 表的位置。

2、 然后,客戶端從 META 表請求相應(yīng) Rowkey 的 Region Server 的位置以訪問它??蛻舳藭彺娈?dāng)前 META 表的信息。

3、 然后它將通過從相應(yīng)的 Region Server 請求獲取行位置。

image

在這里有一個地方要注意,客戶端會緩存 META 表信息,所以之后請求不會直接通過 META 表檢索 Region Server 的位置,除非因為區(qū)域被移位或移動而導(dǎo)致查詢失敗。然后它才會再次請求 META 服務(wù)器并更新緩存。這樣可以節(jié)省時間而且搜索過程會更快。

六、HBase 寫機(jī)制

image

數(shù)據(jù)寫入過程一樣要進(jìn)行尋址,需要先得到 Region Server 才能繼續(xù)操作。寫入機(jī)制按順序執(zhí)行以下過程(參見上圖):

1、 每當(dāng)客戶端有寫請求時,客戶端將數(shù)據(jù)寫入預(yù)寫日 WAL;

  • 新增附加到存儲在磁盤上的 WAL 文件的末尾
  • WAL 用于在服務(wù)器崩潰時恢復(fù)尚未保留的數(shù)據(jù)

2、 將數(shù)據(jù)寫入 WAL 后,將其復(fù)制到 MemStore;

3、 將數(shù)據(jù)放入 MemStore 后,客戶端將收到確認(rèn);

4、 當(dāng) MemStore 達(dá)到閾值時,它將數(shù)據(jù)轉(zhuǎn)儲或提交到 HFile。

MemStore

MemStore 在內(nèi)存按照 Key 的順序, 以 Key-Value 對進(jìn)行存儲。每個列族都有一個 MemStore,因此更新是以每個列族的排序方式存儲。當(dāng) MemStore 達(dá)到閾值時,它會將已排序的所有數(shù)據(jù)轉(zhuǎn)儲到新的 HFile 中,HFile 存儲在 HDFS 中。HBase 為每個列族包含多個 HFile。

MemStore 還保存了最后寫入的序列號,因此 Master Server 和 MemStore 都知道,到目前為止提交的內(nèi)容以及從哪里開始。當(dāng)區(qū)域啟動時,將讀取最后一個序列號,并從該序列號開始新的寫入。

HFile

寫入順序放在磁盤上。因此,磁盤讀寫磁頭的移動非常少。這使得寫入和搜索機(jī)制非常快。只要 HFile 打開,HFile索引就會加載到內(nèi)存中。這有助于在單個搜索中查找記錄。

七、什么情況應(yīng)該使用HBase?

作為 NoSQL DB,HBase 提供了許多良好的功能,但它仍然不是適用所有情況的解決方案,進(jìn)一步說它是為了解決某一些方面而存在的。當(dāng)你的應(yīng)用程序要使用 HBase,需要考慮一些關(guān)鍵因數(shù)。

數(shù)據(jù)量: 數(shù)據(jù)量是最??紤]。在分布式環(huán)境中一般處理 PB 級別的數(shù)據(jù)。否則,對于少量數(shù)據(jù),它將在單個節(jié)點中存儲和處理,而其他節(jié)點空閑,這是對技術(shù)框架的濫用。

吞吐量: HBase 其中一個最大優(yōu)勢就是接近最優(yōu)的 I/O 讀寫速度,持續(xù)的大量的插入可以達(dá)到每秒百萬的吞吐量。

關(guān)系特性: 應(yīng)用程序?qū)κ聞?wù),觸發(fā)器,復(fù)雜查詢,復(fù)雜連接等 RDBMS 功能不做任何要求,HBase 對于這些基本都不支持。

除了以上幾點,當(dāng)需要在非關(guān)系環(huán)境中進(jìn)行容錯和可用的數(shù)據(jù)管理時,HBase也是合適的。在這里許多人會拿 RDBMS 和 Hbase 進(jìn)行比較, 其實兩者的對比毫無意義,從上面幾點關(guān)鍵因數(shù)也可以看出,兩者適用于不同的場景,比較是毫無意義的。

八、小結(jié)

HBase 是在 HDFS 之上運(yùn)行的非關(guān)系型(NoSQL)數(shù)據(jù)庫,提供對這些大型數(shù)據(jù)集的實時讀/寫訪問。HBase 水平擴(kuò)展使其處理具有數(shù)十億行和數(shù)百萬列的大量數(shù)據(jù)集,并且它可以輕松組合使用各種不同結(jié)構(gòu)和模式的數(shù)據(jù)。正是如此,HBase 成為 Hadoop 生態(tài)圈 中重要的一環(huán),用于存儲,管理和處理大數(shù)據(jù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 初次接觸HBase的讀者,建議先閱讀淺析HBase:為高效的可擴(kuò)展大規(guī)模分布式系統(tǒng)而生 HBase的構(gòu)成 物理上來...
    耀凱考前突擊大師閱讀 5,393評論 0 12
  • 本文首先簡單介紹了HBase,然后重點講述了HBase的高并發(fā)和實時處理數(shù)據(jù) 、HBase數(shù)據(jù)模型、HBase物理...
    達(dá)微閱讀 2,854評論 1 13
  • 原創(chuàng)文/雨涵 燈光下 花開有聲 纖指 架起綠藤 光的發(fā)鬢 掠過一縷風(fēng)清 雪花 叫醒黑夜 詩雨 掩不住綬鳥的爭鳴 過...
    微雨紛飛閱讀 1,153評論 21 67
  • 如勾月,輕折楊柳葉 。情寄楊柳何處,小榭 。相思縫香囊,燕成雙 。 銀絲雨,伴吹銷魂曲,何時悄然心相許 。晚風(fēng)透沉...
    葉落丶松林閱讀 212評論 0 0
  • 下載maven工具zip# 配置maven環(huán)境參數(shù)# 2. 配置MAVEN_HOME 3. 配置Path 4....
    TTTTTriM閱讀 598評論 0 0

友情鏈接更多精彩內(nèi)容