自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HBase工作原理:Hadoop體系結(jié)構(gòu)的一部分

大數(shù)據(jù) Hadoop
HBase是一種高可靠性,高性能,面向列的可擴(kuò)展分布式存儲(chǔ)系統(tǒng),它使用HBase技術(shù)在廉價(jià)的PC服務(wù)器上構(gòu)建大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。 HBase的目標(biāo)是存儲(chǔ)和處理大量數(shù)據(jù),特別是僅使用標(biāo)準(zhǔn)硬件配置即可處理包含數(shù)千行和列的大量數(shù)據(jù)。

Hadoop中HBase工作的簡(jiǎn)要概述

 

HBase工作原理:Hadoop體系結(jié)構(gòu)的一部分

1.引言

HBase是一種高可靠性,高性能,面向列的可擴(kuò)展分布式存儲(chǔ)系統(tǒng),它使用HBase技術(shù)在廉價(jià)的PC服務(wù)器上構(gòu)建大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。 HBase的目標(biāo)是存儲(chǔ)和處理大量數(shù)據(jù),特別是僅使用標(biāo)準(zhǔn)硬件配置即可處理包含數(shù)千行和列的大量數(shù)據(jù)。

與MapReduce的離線批量計(jì)算框架不同,HBase是隨機(jī)訪問(wèn)存儲(chǔ)和檢索數(shù)據(jù)平臺(tái),彌補(bǔ)了HDFS無(wú)法隨機(jī)訪問(wèn)數(shù)據(jù)的缺點(diǎn)。

它適用于實(shí)時(shí)性要求不高的業(yè)務(wù)場(chǎng)景-HBase存儲(chǔ)Byte數(shù)組,該數(shù)組不介意數(shù)據(jù)類(lèi)型,從而允許動(dòng)態(tài),靈活的數(shù)據(jù)模型。

 

HBase工作原理:Hadoop體系結(jié)構(gòu)的一部分
> Hadoop Ecosystem (Credit: Edureka.com)

上圖描繪了Hadoop 2.0生態(tài)系統(tǒng)的各個(gè)層-位于結(jié)構(gòu)化存儲(chǔ)層上的Hbase。

HDFS為HBase提供了高可靠性的低級(jí)存儲(chǔ)支持。

MapReduce為HBase提供了高性能的批處理功能。 ZooKeeper為HBase提供穩(wěn)定的服務(wù)和故障轉(zhuǎn)移機(jī)制。 Pig和Hive為數(shù)據(jù)統(tǒng)計(jì)處理的高級(jí)語(yǔ)言支持提供了HBase,Sqoop為HDB提供了可用的RDBMS數(shù)據(jù)導(dǎo)入功能,這使得從傳統(tǒng)數(shù)據(jù)庫(kù)到HBase的業(yè)務(wù)數(shù)據(jù)遷移非常方便。

2. HBase架構(gòu)

2.1設(shè)計(jì)Idea

HBase是一個(gè)分布式數(shù)據(jù)庫(kù),使用ZooKeeper來(lái)管理群集和HDFS作為基礎(chǔ)存儲(chǔ)。

在體系結(jié)構(gòu)級(jí)別,它由HMaster(由Zookeeper選擇的領(lǐng)導(dǎo)者)和多個(gè)HRegionServers組成。

下圖顯示了基礎(chǔ)架構(gòu):

 

HBase工作原理:Hadoop體系結(jié)構(gòu)的一部分

在HBase的概念中,HRegionServer對(duì)應(yīng)于群集中的一個(gè)節(jié)點(diǎn),一個(gè)HRegionServer負(fù)責(zé)管理多個(gè)HRegion,一個(gè)HRegion代表表數(shù)據(jù)的一部分。

在HBase中,一個(gè)表可能需要很多HRegion來(lái)存儲(chǔ)數(shù)據(jù),并且每個(gè)HRegion中的數(shù)據(jù)都不會(huì)雜亂無(wú)章。

當(dāng)HBase管理HRegion時(shí),它將為每個(gè)HRegion定義一定范圍的Rowkey。 屬于定義范圍的數(shù)據(jù)將被移交給特定區(qū)域,從而將負(fù)載分配給多個(gè)節(jié)點(diǎn),從而利用分布和特性的優(yōu)勢(shì)。

同樣,HBase將自動(dòng)調(diào)整區(qū)域的位置。 如果HRegionServer過(guò)熱,即大量請(qǐng)求落在HRegionServer管理的HRegion上,則HBase會(huì)將HRegion移動(dòng)到相對(duì)空閑的其他節(jié)點(diǎn),以確保充分利用群集環(huán)境。

2.2基本架構(gòu)

HBase由HMaster和HRegionServer組成,并且遵循主從服務(wù)器體系結(jié)構(gòu)。 HBase將邏輯表分為多個(gè)數(shù)據(jù)塊HRegion,并將它們存儲(chǔ)在HRegionServer中。

HMaster負(fù)責(zé)管理所有HRegionServer。 它本身不存儲(chǔ)任何數(shù)據(jù),而僅存儲(chǔ)數(shù)據(jù)到HRegionServer的映射(元數(shù)據(jù))。

群集中的所有節(jié)點(diǎn)均由Zookeeper協(xié)調(diào),并處理HBase操作期間可能遇到的各種問(wèn)題。 HBase的基本架構(gòu)如下所示:

 

HBase工作原理:Hadoop體系結(jié)構(gòu)的一部分

客戶端:使用HBase的RPC機(jī)制與HMaster和HRegionServer通信,提交請(qǐng)求并獲得結(jié)果。 對(duì)于管理操作,客戶端使用HMaster執(zhí)行RPC。 對(duì)于數(shù)據(jù)讀取和寫(xiě)入操作,客戶端使用HRegionServer執(zhí)行RPC。

Zookeeper:通過(guò)將集群中每個(gè)節(jié)點(diǎn)的狀態(tài)信息注冊(cè)到ZooKeeper,HMaster可以隨時(shí)感知每個(gè)HRegionServer的健康狀態(tài),還可以避免HMaster的單點(diǎn)故障。

HMaster:管理所有HRegionServer,告訴他們需要維護(hù)哪些HRegion,并監(jiān)視所有HRegionServer的運(yùn)行狀況。 當(dāng)新的HRegionServer登錄到HMaster時(shí),HMaster告訴它等待數(shù)據(jù)分配。 當(dāng)HRegion死亡時(shí),HMaster將其負(fù)責(zé)的所有HRegion標(biāo)記為未分配,然后將它們分配給其他HRegionServer。 HMaster沒(méi)有單點(diǎn)問(wèn)題。 HBase可以啟動(dòng)多個(gè)HMaster。 通過(guò)Zookeeper的選舉機(jī)制,群集中始終有一個(gè)HMaster運(yùn)行,從而提高了群集的可用性。

HRegion:當(dāng)表的大小超過(guò)預(yù)設(shè)值時(shí),HBase會(huì)自動(dòng)將表劃分為不同的區(qū)域,每個(gè)區(qū)域都包含表中所有行的子集。 對(duì)于用戶來(lái)說(shuō),每個(gè)表都是數(shù)據(jù)的集合,用主鍵(RowKey)加以區(qū)分。 從物理上講,一個(gè)表分為多個(gè)塊,每個(gè)塊都是一個(gè)HRegion。 我們使用表名+開(kāi)始/結(jié)束主鍵來(lái)區(qū)分每個(gè)HRegion。 一個(gè)HRegion會(huì)將一段連續(xù)數(shù)據(jù)保存在一個(gè)表中。 完整的表數(shù)據(jù)存儲(chǔ)在多個(gè)HRegions中。

HRegionServer:HBase中的所有數(shù)據(jù)通常從底層存儲(chǔ)在HDFS中。 用戶可以通過(guò)一系列HRegionServer獲得此數(shù)據(jù)。 通常,群集的一個(gè)節(jié)點(diǎn)上僅運(yùn)行一臺(tái)HRegionServer,并且每個(gè)段的HRegion僅由一個(gè)HRegionServer維護(hù)。 HRegionServer主要負(fù)責(zé)響應(yīng)用戶I / O請(qǐng)求將數(shù)據(jù)讀取和寫(xiě)入HDFS文件系統(tǒng)。 它是HBase中的核心模塊。 HRegionServer在內(nèi)部管理一系列HRegion對(duì)象,每個(gè)HRegion對(duì)應(yīng)于邏輯表中的連續(xù)數(shù)據(jù)段。 HRegion由多個(gè)HStore組成。 每個(gè)HStore對(duì)應(yīng)于邏輯表中一個(gè)列族的存儲(chǔ)。 可以看出,每個(gè)列族都是一個(gè)集中式存儲(chǔ)單元。 因此,為了提高操作效率,最好將具有共同I / O特性的列放在一個(gè)列系列中。

HStore:它是HBase存儲(chǔ)的核心,它由MemStore和StoreFiles組成。 MemStore是內(nèi)存緩沖區(qū)。用戶寫(xiě)入的數(shù)據(jù)將首先放入MemStore。當(dāng)MemStore已滿時(shí),F(xiàn)lush將是一個(gè)StoreFile(底層實(shí)現(xiàn)是HFile)。當(dāng)StoreFile文件的數(shù)量增加到某個(gè)閾值時(shí),將觸發(fā)Compact合并操作,將多個(gè)StoreFile合并為一個(gè)StoreFile,并在合并過(guò)程中執(zhí)行版本合并和數(shù)據(jù)刪除操作。因此,可以看出,HBase僅添加數(shù)據(jù),并且所有更新和刪除操作都在后續(xù)的Compact進(jìn)程中執(zhí)行,因此用戶的寫(xiě)入操作可以在其進(jìn)入內(nèi)存后立即返回,從而確保HBaseI /哦當(dāng)StoreFiles Compact時(shí),它將逐漸形成越來(lái)越大的StoreFile。當(dāng)單個(gè)StoreFile的大小超過(guò)某個(gè)閾值時(shí),將觸發(fā)分割操作。同時(shí),當(dāng)前的HRegion將被拆分為2個(gè)HRegion,并且父HRegion將脫機(jī)。 HMaster將這兩個(gè)子HRegion分配給相應(yīng)的HRegionServer,以便將原始HRegion的負(fù)載壓力分流到這兩個(gè)HRegion。

HLog:每個(gè)HRegionServer都有一個(gè)HLog對(duì)象,該對(duì)象是實(shí)現(xiàn)預(yù)寫(xiě)日志的預(yù)寫(xiě)日志類(lèi)。 每次用戶將數(shù)據(jù)寫(xiě)入MemStore時(shí),它還將數(shù)據(jù)的副本寫(xiě)入HLog文件。 定期滾動(dòng)和刪除HLog文件,并刪除舊文件(已保存到StoreFile的數(shù)據(jù))。 當(dāng)HMaster檢測(cè)到HRegionServer被Zookeeper意外終止時(shí),HMaster首先處理舊版HLog文件,分割不同HRegion的HLog數(shù)據(jù),將它們放入相應(yīng)的HRegion目錄中,然后重新分發(fā)無(wú)效的HRegion。 在加載HRegion的過(guò)程中,這些HRegion的HRegionServer將發(fā)現(xiàn)需要處理HLog的歷史記錄,因此將Replay HLog中的數(shù)據(jù)傳輸?shù)組emStore,然后刷新到StoreFiles以完成數(shù)據(jù)恢復(fù)。

2.3 根和元

HBase的所有HRegion元數(shù)據(jù)都存儲(chǔ)在.META中。 表。 隨著HRegion的增加,.META表中的數(shù)據(jù)也增加并分裂為多個(gè)新的HRegion。

為了找到.META表中每個(gè)HRegion的位置,將表中.META表中所有HRegion的元數(shù)據(jù)存儲(chǔ)在-ROOT-table中,最后,Zookeeper記錄ROOT表的位置信息。

在所有客戶端訪問(wèn)用戶數(shù)據(jù)之前,他們需要首先訪問(wèn)Zookeeper以獲取-ROOT-的位置,然后訪問(wèn)-ROOT-table以獲取.META表的位置,最后根據(jù)以下信息確定用戶數(shù)據(jù)的位置: META表中的信息,如下所示:該圖顯示。

 

HBase工作原理:Hadoop體系結(jié)構(gòu)的一部分

-ROOT表永遠(yuǎn)不會(huì)拆分。 它只有一個(gè)HRegion,這可以確保只需三個(gè)跳轉(zhuǎn)就可以定位任何HRegion。 為了加快訪問(wèn)速度,.META表的所有區(qū)域都保留在內(nèi)存中。

客戶端緩存查詢的位置信息,并且緩存不會(huì)主動(dòng)失敗。 如果客戶端仍然無(wú)法基于緩存的信息訪問(wèn)數(shù)據(jù),則請(qǐng)相關(guān).META表的Region服務(wù)器嘗試獲取數(shù)據(jù)的位置。 如果仍然失敗,請(qǐng)?jiān)儐?wèn)與-ROOT-table關(guān)聯(lián)的.META表在哪里。

最后,如果先前的信息全部無(wú)效,則Zookeeper將HRegion的數(shù)據(jù)重定位。 因此,如果客戶端上的緩存完全無(wú)效,則需要來(lái)回六次以獲取正確的HRegion。

3. HBase數(shù)據(jù)模型

HBase是類(lèi)似于BigTable的分布式數(shù)據(jù)庫(kù)。 它是稀疏的長(zhǎng)期存儲(chǔ)(在HDFS上),多維和排序的映射表。 該表的索引是行關(guān)鍵字,列關(guān)鍵字和時(shí)間戳。 HBase數(shù)據(jù)是字符串,沒(méi)有類(lèi)型。

 

HBase工作原理:Hadoop體系結(jié)構(gòu)的一部分

將表視為大型映射。 您可以按行鍵,行鍵+時(shí)間戳或行鍵+列(列族:列修飾符)查找特定數(shù)據(jù)。 由于HBase稀疏地存儲(chǔ)數(shù)據(jù),因此某些列可以為空。 上表給出了com.cnn.www網(wǎng)站的邏輯存儲(chǔ)邏輯視圖。 表中只有一行數(shù)據(jù)。

該行的唯一標(biāo)識(shí)符是" com.cnn.www",并且此數(shù)據(jù)行的每次邏輯修改都有一定的時(shí)間。 標(biāo)記對(duì)應(yīng)于。

該表中有四列:內(nèi)容:HTML,anchor:cnnsi.com,anchor:my.look.ca,mime:type,每個(gè)列都給出了它所屬的列族。

行鍵(RowKey)是表中數(shù)據(jù)行的唯一標(biāo)識(shí)符,并用作檢索記錄的主鍵。

在HBase中,只有三種方法可以訪問(wèn)表中的行:通過(guò)行鍵進(jìn)行訪問(wèn),給定行鍵的范圍訪問(wèn)以及全表掃描。

行鍵可以是任何字符串(最大長(zhǎng)度為64KB),并按字典順序存儲(chǔ)。 對(duì)于經(jīng)常一起讀取的行,需要仔細(xì)設(shè)計(jì)基本值,以便可以將它們一起存儲(chǔ)。

4. HBase讀寫(xiě)過(guò)程

下圖是HRegionServer數(shù)據(jù)存儲(chǔ)關(guān)系圖。 如上所述,HBase使用MemStore和StoreFile將更新存儲(chǔ)到表中。 數(shù)據(jù)在更新后首先寫(xiě)入HLog和MemStore。 MemStore中的數(shù)據(jù)已排序。

 

HBase工作原理:Hadoop體系結(jié)構(gòu)的一部分

當(dāng)MemStore累積到某個(gè)閾值時(shí),將創(chuàng)建一個(gè)新的MemStore,并將舊的MemStore添加到Flush隊(duì)列中,并將一個(gè)單獨(dú)的線程刷新到磁盤(pán)上以成為StoreFile。 同時(shí),系統(tǒng)將在Zookeeper中記錄一個(gè)CheckPoint,表明該時(shí)間之前的數(shù)據(jù)更改已保留。 當(dāng)發(fā)生意外系統(tǒng)時(shí),MemStore中的數(shù)據(jù)可能會(huì)丟失。

在這種情況下,HLog用于在CheckPoint之后恢復(fù)數(shù)據(jù)。

StoreFile是只讀的,一旦創(chuàng)建便無(wú)法修改。 因此,HBase的更新是一項(xiàng)附加操作。 當(dāng)商店中的StoreFile達(dá)到某個(gè)閾值時(shí),將執(zhí)行合并操作,并且將相同密鑰的修改合并以形成一個(gè)大型StoreFile。 當(dāng)StoreFile的大小達(dá)到某個(gè)閾值時(shí),StoreFile被拆分并分為兩個(gè)StoreFiles。

4.1寫(xiě)操作流程

  • 步驟1:客戶端通過(guò)Zookeeper的調(diào)度向HRegionServer發(fā)送寫(xiě)數(shù)據(jù)請(qǐng)求,并將數(shù)據(jù)寫(xiě)入HRegion。
  • 步驟2:將數(shù)據(jù)寫(xiě)入HRegion的MemStore,直到MemStore達(dá)到預(yù)設(shè)閾值。
  • 步驟3:MemStore中的數(shù)據(jù)被整理到StoreFile中。
  • 步驟4:隨著StoreFile文件數(shù)量的增加,當(dāng)StoreFile文件數(shù)量增加到特定閾值時(shí),將執(zhí)行Compact合并操作,并將多個(gè)StoreFiles合并到一個(gè)StoreFile中,并在版本庫(kù)中執(zhí)行版本合并和數(shù)據(jù)刪除。 同時(shí)。
  • 步驟5:StoreFiles通過(guò)連續(xù)的Compact操作逐漸形成越來(lái)越大的StoreFile。
  • 步驟6:在單個(gè)StoreFile的大小超過(guò)某個(gè)閾值之后,將觸發(fā)Split操作,將當(dāng)前的HRegion拆分為兩個(gè)新的HRegion。 父HRegion將脫機(jī),新的Split的兩個(gè)子HRegion將由HMaster分配給相應(yīng)的HRegionServer,以便可以將原始HRegion的壓力分流到這兩個(gè)HRegion。

4.2讀取操作流程

  • 步驟1:客戶端訪問(wèn)Zookeeper,找到-ROOT-table,并獲得.META。 表信息。
  • 步驟2:從.META中搜索。 表獲取目標(biāo)數(shù)據(jù)的HRegion信息,找到對(duì)應(yīng)的HRegionServer。
  • 步驟3:獲取需要通過(guò)HRegionServer查找的數(shù)據(jù)。
  • 步驟4:HRegionserver的內(nèi)存分為兩部分:MemStore和BlockCache。 MemStore主要用于寫(xiě)入數(shù)據(jù),而B(niǎo)lockCache主要用于讀取數(shù)據(jù)。 首先將請(qǐng)求讀取到MemStore以檢查數(shù)據(jù),檢查BlockCache檢查,然后檢查StoreFile,然后將讀取結(jié)果放入BlockCache。

5. HBase使用場(chǎng)景

半結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù):對(duì)于沒(méi)有很好定義或混亂的數(shù)據(jù)結(jié)構(gòu)字段,很難根據(jù)適用于HBase的概念來(lái)提取數(shù)據(jù)。 如果隨著業(yè)務(wù)增長(zhǎng)存儲(chǔ)更多字段,則需要關(guān)閉RDBMS來(lái)維護(hù)更改表結(jié)構(gòu),并且HBase支持動(dòng)態(tài)添加。

記錄非常稀疏:RDBMS行的多少列是固定的,而空列則浪費(fèi)存儲(chǔ)空間。 HBase為空的列不會(huì)存儲(chǔ),這樣可以節(jié)省空間并提高讀取性能。

多版本數(shù)據(jù):根據(jù)RowKey和列標(biāo)識(shí)符定位的值可以具有任意數(shù)量的版本值(時(shí)間戳是不同的),因此將HBase用于需要存儲(chǔ)更改歷史記錄的數(shù)據(jù)非常方便 。

大量數(shù)據(jù):當(dāng)數(shù)據(jù)量越來(lái)越大時(shí),RDBMS數(shù)據(jù)庫(kù)將無(wú)法承受,并且存在讀寫(xiě)分離策略。 通過(guò)一個(gè)主機(jī),它負(fù)責(zé)寫(xiě)操作,而多個(gè)從機(jī)則負(fù)責(zé)讀取操作,服務(wù)器成本增加了一倍。 隨著壓力的增加,船長(zhǎng)無(wú)法承受壓力。 此時(shí),將對(duì)庫(kù)進(jìn)行劃分,并且將幾乎不相關(guān)的數(shù)據(jù)分別部署。 某些聯(lián)接查詢無(wú)法使用,并且需要使用中間層。 隨著數(shù)據(jù)量的進(jìn)一步增加,表的記錄變得越來(lái)越大,查詢變得非常慢。

因此,有必要例如通過(guò)對(duì)ID進(jìn)行?;瘜⒈韯澐譃槎鄠€(gè)表,以減少單個(gè)表的記錄數(shù)。 經(jīng)歷過(guò)這些事情的人都知道如何拋棄這個(gè)過(guò)程。

HBase很簡(jiǎn)單,只需將新節(jié)點(diǎn)添加到群集,HBase就會(huì)自動(dòng)水平拆分,并且與Hadoop的無(wú)縫集成可確保數(shù)據(jù)可靠性(HDFS)和高性能的海量數(shù)據(jù)分析(MapReduce)。

6. HBase Map Reduce

 

HBase工作原理:Hadoop體系結(jié)構(gòu)的一部分

HBase中的Table與Region之間的關(guān)系與HDFS中的File與Block之間的關(guān)系有些相似。 由于HBase提供了與MapReduce進(jìn)行交互的API,例如TableInputFormat和TableOutputFormat,因此HBase數(shù)據(jù)表可以直接用作Hadoop MapReduce的輸入和輸出,這有利于MapReduce應(yīng)用程序的開(kāi)發(fā),并且不需要注意HBase的處理。 系統(tǒng)本身的詳細(xì)信息。

如果您喜歡這個(gè)主題,可以看看我寫(xiě)下的有關(guān)Hadoop的其他幾個(gè)主題。 如果您發(fā)現(xiàn)任何錯(cuò)誤或有任何建議,請(qǐng)隨時(shí)通過(guò)我的LinkedIn與我聯(lián)系。

責(zé)任編輯:未麗燕 來(lái)源: 今日頭條
相關(guān)推薦

2009-07-14 13:49:28

Swing組件AWT

2021-10-10 00:03:38

NodePodTerminating

2019-04-10 11:06:54

前端HTMLCSS

2010-03-11 11:29:51

喬布斯

2024-05-15 08:12:11

SignalJavaScriptPromises

2020-10-13 09:54:38

內(nèi)存技術(shù)數(shù)據(jù)

2012-12-13 13:09:38

2009-06-09 14:40:01

Javascript表單驗(yàn)證

2019-05-09 15:20:24

微軟WindowsLinux

2009-06-11 15:25:39

Java隨機(jī)數(shù)

2013-03-14 14:11:27

IaaS

2009-06-12 10:34:40

Java Date

2009-06-12 10:08:05

StaticJava

2009-06-03 09:11:03

Hibernate工作原理體系結(jié)構(gòu)

2024-11-06 14:36:27

2025-01-22 08:01:53

2025-04-24 00:10:00

RAGAI人工智能

2013-07-08 15:45:04

Python

2013-09-24 10:07:19

Ruby項(xiàng)目

2013-04-08 15:42:38

Backbone.js入門(mén)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)