




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單元3HBase的原理與架構(gòu)1HBase的架構(gòu)目錄HBase的模型2HBase的讀寫流程3
HBase的分布式架構(gòu)優(yōu)勢HBase作為一種分布式數(shù)據(jù)庫,其架構(gòu)設(shè)計(jì)使其在海量數(shù)據(jù)的快速存儲(chǔ)和隨機(jī)訪問方面具有顯著優(yōu)勢。通過數(shù)據(jù)副本機(jī)制和分區(qū)機(jī)制,HBase能夠輕松實(shí)現(xiàn)在線擴(kuò)容、縮容和數(shù)據(jù)容災(zāi),從而成為大數(shù)據(jù)領(lǐng)域中Key-Value數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)的常用方案之一。此外,HBase還能夠通過分布式集群讀寫海量數(shù)據(jù),這是傳統(tǒng)數(shù)據(jù)庫難以實(shí)現(xiàn)的。
本章學(xué)習(xí)目標(biāo)本章旨在幫助讀者掌握HBase的數(shù)據(jù)模型、架構(gòu)和讀寫流程。具體學(xué)習(xí)目標(biāo)包括:掌握HBase數(shù)據(jù)模型及核心知識(shí)。理解HBase架構(gòu)的原理。010204理解HBase的讀寫流程。03
HBase的邏輯模型HBase的邏輯模型以列為基本單位,多列構(gòu)成一行。每行擁有唯一的行鍵(RowKey),相同行鍵的插入操作被視為對(duì)同一行的操作,多次插入操作實(shí)際上是對(duì)該行數(shù)據(jù)的更新操作。HBase表包含多個(gè)行,每行包含多個(gè)列,列中的值可以有多個(gè)版本,每個(gè)版本的值稱為一個(gè)單元格,每個(gè)單元格存儲(chǔ)的是該列不同時(shí)間的值。
HBase的數(shù)據(jù)模型01”HBase實(shí)際上是一個(gè)稀疏、多維、持久化存儲(chǔ)的映射表,采用行鍵(RowKey)、列簇(ColumnFamily)、列限定符(ColumnQualifier)和時(shí)間戳(Timestamp)進(jìn)行索引。每個(gè)值都由未經(jīng)解釋的字節(jié)組成byte[],沒有數(shù)據(jù)類型。用戶在表中存儲(chǔ)數(shù)據(jù)時(shí),每一行都有一個(gè)可排序的行鍵和任意多的列。列簇支持動(dòng)態(tài)擴(kuò)展,用戶可以輕松地添加一個(gè)列簇或列,無需預(yù)先定義列的數(shù)量和類型。由于同一張表里的每一行數(shù)據(jù)都可以有截然不同的列,對(duì)于整個(gè)映射表的每行數(shù)據(jù)而言,有些列的值可以是空的,因此HBase是稀疏的。HBase的數(shù)據(jù)模型0102表HBase是一種列式存儲(chǔ)的分布式數(shù)據(jù)庫,其核心概念是表(Table)。與傳統(tǒng)關(guān)系型數(shù)據(jù)庫一樣,HBase的表也是由行和列組成的,但HBase的同一列可以存儲(chǔ)不同時(shí)刻的值,多個(gè)列可以組成一個(gè)列簇(ColumnFamily),這種組織形式主要是出于對(duì)HBase存取性能的考慮。行鍵每個(gè)HBase表中只能有一個(gè)行鍵,類似于主鍵。由于RowKey是HBase表的唯一標(biāo)識(shí),HBase表中的記錄是按照RowKey的字典序排列的,因此,RowKey的設(shè)計(jì)非常重要。在HBase中,為了高效地檢索數(shù)據(jù),需要設(shè)計(jì)良好的RowKey來提高查詢性能。因?yàn)镽owKey會(huì)被冗余存儲(chǔ),所以長度不宜過長,否則既會(huì)占用大量的存儲(chǔ)空間,又會(huì)降低檢索效率。RowKey應(yīng)該盡量均勻分布,避免產(chǎn)生熱點(diǎn)問題(即大量用戶訪問集中在一個(gè)或極少數(shù)節(jié)點(diǎn),導(dǎo)致單臺(tái)節(jié)點(diǎn)超出自身承受能力)。另外,還需要保證RowKey的唯一性。數(shù)據(jù)的存儲(chǔ)規(guī)則是相近的數(shù)據(jù)存儲(chǔ)在一起。例如,RowKey的格式為、、和的網(wǎng)站名稱時(shí),可以對(duì)網(wǎng)站名稱反轉(zhuǎn)后再進(jìn)行存儲(chǔ),反轉(zhuǎn)后為com.cqyti.www、com.cqyti.sxy、com.cqyti.dsj和com.cqyti.zngc。這樣,所有com.cqyti域名將會(huì)存儲(chǔ)在一起,避免子域名(即www、sxy、dsj、zngc)分散在各處。HBase的數(shù)據(jù)模型0304列簇HBase表中的每個(gè)列都?xì)w屬于某個(gè)列簇,一個(gè)列簇中的所有列成員有著相同的前綴。例如,列anchor:和anchor:my.look.ca都是列簇anchor的成員。列簇是表的schema的一部分,必須在使用表之前定義列簇,但列卻不是必需的,寫數(shù)據(jù)的時(shí)候可以動(dòng)態(tài)加入。一般將經(jīng)常一起查詢的列放在一個(gè)列簇中,合理劃分列簇將減少查詢時(shí)加載到緩存的數(shù)據(jù),提高查詢效率。由于跨列簇訪問非常低效,因此不應(yīng)有太多的列簇。單元格HBase中通過RowKey和Column確定的存儲(chǔ)單元稱為單元格(Cell)。每個(gè)單元格都保存著同一份數(shù)據(jù)的多個(gè)版本。HBase的數(shù)據(jù)模型0504時(shí)間戳在HBase表中,通過行鍵、列簇和列名確定一個(gè)單元格。單元格中存儲(chǔ)的數(shù)據(jù)沒有數(shù)據(jù)類型,被視為byte[]字節(jié)數(shù)組。單元格中保存的數(shù)據(jù)的每個(gè)版本對(duì)應(yīng)一個(gè)不同的時(shí)間戳,每次對(duì)一個(gè)單元格執(zhí)行操作(新建、修改、刪除)時(shí),HBase都將隱式地自動(dòng)生成并存儲(chǔ)一個(gè)時(shí)間戳。時(shí)間戳一般是64位整型數(shù)據(jù),可以由用戶自己賦值(自己生成唯一時(shí)間戳可以避免應(yīng)用程序中出現(xiàn)數(shù)據(jù)版本沖突),也可以由HBase在數(shù)據(jù)寫入時(shí)自動(dòng)賦值。一個(gè)單元格的不同版本根據(jù)時(shí)間戳進(jìn)行降序存儲(chǔ)。因此,最新版本的數(shù)據(jù)可以被優(yōu)先讀取,通常將記錄每次操作數(shù)據(jù)的時(shí)間戳記作數(shù)據(jù)的版本號(hào)。
HBase的物理模型雖然在邏輯模型中表可以被看作一個(gè)稀疏的行集合,但在物理層面,表是按列簇分開存儲(chǔ)的。HBase的列是按列簇分組的,HFile是面向列的物理文件,可以存放行的不同列。一個(gè)列簇的數(shù)據(jù)存放在多個(gè)HFile中,最重要的是一個(gè)列簇的數(shù)據(jù)會(huì)被同一個(gè)Region管理,物理上存放在一起。
HBase的Region模型HBase表中的所有行都按照RowKey的字典序排列,在行的方向上分割為多個(gè)Region。Region是HBase數(shù)據(jù)管理的基本單位,數(shù)據(jù)移動(dòng)、數(shù)據(jù)的負(fù)載均衡及數(shù)據(jù)的分裂都是以Region為單位來進(jìn)行的。HBase的表默認(rèn)最初只有一個(gè)Region,隨著記錄數(shù)不斷增加而變大后,會(huì)逐漸分裂成多個(gè)Region,每個(gè)Region根據(jù)[startkey,endkey]的范圍來劃分,不同的Region會(huì)被Master分配給相應(yīng)的RegionServer進(jìn)行管理。
HBase的Region模型Region是HBase中分布式存儲(chǔ)和負(fù)載均衡的最小單元。
HBase的Region模型Region雖然是HBase中分布式存儲(chǔ)的最小單元,但并不是存儲(chǔ)的最小單元。Region由一個(gè)或多個(gè)Store組成,每個(gè)Store保存一個(gè)ColumnFamily。每個(gè)Store又由一個(gè)MemStore和零至多個(gè)StoreFile組成。MemStore代表寫緩存,StoreFile存儲(chǔ)在HDFS之上。1HBase的架構(gòu)目錄HBase的模型2HBase的讀寫流程3
HBase的系統(tǒng)架構(gòu)HBase采用Master/Slave架構(gòu)搭建集群,屬于Hadoop生態(tài)系統(tǒng)的組件。HBase的系統(tǒng)架構(gòu)由Client(客戶端)、HMaster(主節(jié)點(diǎn))、HRegionServer(從節(jié)點(diǎn))、ZooKeeper(協(xié)調(diào)服務(wù)模塊)等部分組成,并將數(shù)據(jù)存儲(chǔ)于HDFS中。
HBase的核心組件01ClientClient是整個(gè)HBase系統(tǒng)的入口,可以通過Client直接操作HBase。Client使用HBase的遠(yuǎn)程過程調(diào)用協(xié)議(RemoteProcedureCallProtocol,RPC)機(jī)制與HMaster和HRegionServer進(jìn)行通信。02ZooKeeper分布式HBase依賴于ZooKeeper集群,所有節(jié)點(diǎn)和客戶端必須能夠正常訪問ZooKeeper。HBase默認(rèn)管理一個(gè)單點(diǎn)的ZooKeeper集群,HBase可以將ZooKeeper當(dāng)作自身的一部分來啟動(dòng)和關(guān)閉進(jìn)程。03HMasterHBase中可以啟動(dòng)多個(gè)HMaster,通過ZooKeeper的Master選舉機(jī)制保證總有一個(gè)HMaster在運(yùn)行。HMaster管理HRegionServer的負(fù)載均衡,調(diào)整HRegion的分布。04HRegionServerHRegionServer主要負(fù)責(zé)響應(yīng)用戶的I/O請(qǐng)求,在HDFS文件系統(tǒng)中讀寫數(shù)據(jù),是HBase的核心模塊。HRegionServer內(nèi)部管理了一系列HRegion,HRegion對(duì)應(yīng)Table中的一個(gè)Region,HRegion由多個(gè)HStore組成。
HBase的核心組件05Write-Ahead-Log(WAL,預(yù)寫日志)是HBase的HRegionServer在處理數(shù)據(jù)插入和刪除過程中用于記錄操作內(nèi)容的一種日志形式。大致過程如下:客戶端啟動(dòng)一個(gè)操作來修改數(shù)據(jù),每一處改動(dòng)都被包裝進(jìn)KeyValue對(duì)象實(shí)例中,使用遠(yuǎn)程調(diào)用發(fā)送到ReginoServer對(duì)應(yīng)這次改動(dòng)的Region中。數(shù)據(jù)在HRegionServer中首先被寫入WAL,再被寫入MemStore,最后當(dāng)MemStore達(dá)到一定的大小或到達(dá)指定的時(shí)刻之后,數(shù)據(jù)被異步地持久化到文件系統(tǒng)上。在這之前,數(shù)據(jù)是存儲(chǔ)在內(nèi)存中的,如果HRegionServer崩潰了,那么內(nèi)存的數(shù)據(jù)就沒有了。而如果有WAL,便可恢復(fù)數(shù)據(jù)。每個(gè)HRegionServer中都有一個(gè)HLog對(duì)象。HLog是一個(gè)實(shí)現(xiàn)WAL的類,在每次用戶操作寫入MemStore的同時(shí),也會(huì)寫一份數(shù)據(jù)到HLog文件中,HLog文件會(huì)定期滾動(dòng)出新的文件,并刪除舊的文件(已持久化到StoreFile中的數(shù)據(jù))。當(dāng)HRegionServer意外終止后,HMaster會(huì)通過ZooKeeper感知,HMaster首先會(huì)處理遺留的HLog文件,將其中不同Region的Log數(shù)據(jù)進(jìn)行拆分,分別放到相應(yīng)的Region目錄下,再將失效的Region重新分配給HRegionServer。HRegionServer在加載Region的過程中,將發(fā)現(xiàn)有歷史HLog需要處理,因此會(huì)重置HLog中的數(shù)據(jù)到MemStore中,最后刷新至StoreFile文件中完成數(shù)據(jù)恢復(fù)。1HBase的架構(gòu)目錄HBase的模型2HBase的讀寫流程3
HBase的寫流程01當(dāng)用戶向HRegionServer發(fā)起HTable.put請(qǐng)求,即寫入數(shù)據(jù)請(qǐng)求時(shí),系統(tǒng)會(huì)將請(qǐng)求交給對(duì)應(yīng)的HRegion實(shí)例處理。客戶端首先訪問ZooKeeper集群,查詢-ROOT-表Region所在的RegionServer地址信息。然后,客戶端連接相應(yīng)的RegionServer,并訪問.meta.表,根據(jù)寫入的命名空間、表名和行鍵找到對(duì)應(yīng)的Region信息。為了達(dá)到持久化和恢復(fù)的目的,將數(shù)據(jù)先寫至HLog中,再寫入MemStore。當(dāng)MemStore達(dá)到預(yù)設(shè)閾值后,創(chuàng)建一個(gè)新的MemStore。舊的MemStore會(huì)加入Flush隊(duì)列,由單獨(dú)的線程Flush至磁盤,形成一個(gè)StoreFile。
HBase的讀流程當(dāng)用戶向HRegionServer發(fā)起讀取數(shù)據(jù)請(qǐng)求時(shí),系統(tǒng)會(huì)將請(qǐng)求交給對(duì)應(yīng)的HRegion實(shí)例處理??蛻舳耸紫仍L問ZooKeeper集群,查找元數(shù)據(jù)表
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025商業(yè)辦公裝修合同協(xié)議范本
- 2025藝人經(jīng)紀(jì)合同范本(與經(jīng)紀(jì)人簽訂)
- 2025合作協(xié)議 合同范本
- 2025二手店面交易合同模板
- 2025企業(yè)茶葉批發(fā)合同
- 湖南省湘一名校聯(lián)盟2024-2025學(xué)年高一下學(xué)期4月期中聯(lián)考政治試題(原卷版)
- 基礎(chǔ)護(hù)理皮試說課
- 超聲護(hù)理方案
- 酒店安全知識(shí)培訓(xùn)
- 大一自我鑒定總結(jié)模版
- 廣東省高等學(xué)?!扒О偈こ獭钡诹^續(xù)培養(yǎng)對(duì)象和第
- 人教版三年級(jí)數(shù)學(xué)上冊(cè)口算題卡
- 小數(shù)乘整數(shù)的教學(xué)設(shè)計(jì) 小數(shù)乘整數(shù)教學(xué)設(shè)計(jì)一等獎(jiǎng)(十四篇)
- 玻璃鋼管道施工方案
- 錐坡工程量計(jì)算(支持斜交、溜坡計(jì)算)
- 康復(fù)醫(yī)學(xué)-康復(fù)治療技術(shù)
- 企業(yè)清產(chǎn)核資工作底稿
- LY/T 1675-2006馬尾松毛蟲監(jiān)測與防治技術(shù)規(guī)程
- GB/T 708-2006冷軋鋼板和鋼帶的尺寸、外形、重量及允許偏差
- GB/T 14337-2008化學(xué)纖維短纖維拉伸性能試驗(yàn)方法
- L4-《采購與供應(yīng)策略》-講義課件
評(píng)論
0/150
提交評(píng)論