




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
HBase系統(tǒng)架構(gòu)及數(shù)據(jù)結(jié)構(gòu)2知識(shí)目標(biāo)HBase的架構(gòu)HBase的使用流程01能力目標(biāo)了解HBase架構(gòu)掌握HBase使用流程總結(jié)HBase讀寫流程02學(xué)習(xí)目標(biāo)3目錄01HBase表結(jié)構(gòu)邏輯表視圖02存儲(chǔ)結(jié)構(gòu)03Hbase系統(tǒng)架構(gòu)04數(shù)據(jù)的讀寫流程簡述HBase表結(jié)構(gòu)邏輯表視圖4初次接觸HBase,可能看到以下描述會(huì)懵:“基于列存儲(chǔ)”,“稀疏MAP”,“RowKey”,“ColumnFamily”。其實(shí)沒那么高深,我們需要分兩步來理解HBase,就能夠理解為什么HBase能夠“快速地”“分布式地” 處理“大量數(shù)據(jù)”了。1.內(nèi)存結(jié)構(gòu)2.文件存儲(chǔ)結(jié)構(gòu)名詞概念5假如我們有如下一張表Rowkey的概念6Rowkey的概念和mysql中的主鍵是完全一樣的,Hbase使用Rowkey來唯一的區(qū)分某一行的數(shù)據(jù)。由于Hbase只支持3中查詢方式:1、基于Rowkey的單行查詢2、基于Rowkey的范圍掃描3、全表掃描因此,Rowkey對Hbase的性能影響非常大,Rowkey的設(shè)計(jì)就顯得尤為的重要。設(shè)計(jì)的時(shí)候要兼顧基于Rowkey的單行查詢也要鍵入Rowkey的范圍掃描。具體Rowkey要如何設(shè)計(jì)后續(xù)會(huì)整理相關(guān)的文章做進(jìn)一步的描述。這里大家只要有一個(gè)概念就是Rowkey的設(shè)計(jì)極為重要。rowkey行鍵可以是任意字符串(最大長度是
64KB,實(shí)際應(yīng)用中長度一般為10-100bytes),最好是16。在HBase內(nèi)部,rowkey保存為字節(jié)數(shù)組。HBase會(huì)對表中的數(shù)據(jù)按照rowkey排序(字典順序)Column的概念7列,可理解成MySQL列。ColumnFamily的概念8列族,HBase引入的概念。Hbase通過列族劃分?jǐn)?shù)據(jù)的存儲(chǔ),列族下面可以包含任意多的列,實(shí)現(xiàn)靈活的數(shù)據(jù)存取。就像是家族的概念,我們知道一個(gè)家族是由于很多個(gè)的家庭組成的。列族也類似,列族是由一個(gè)一個(gè)的列組成(任意多)。Hbase表的創(chuàng)建的時(shí)候就必須指定列族。就像關(guān)系型數(shù)據(jù)庫創(chuàng)建的時(shí)候必須指定具體的列是一樣的。Hbase的列族不是越多越好,官方推薦的是列族最好小于或者等于3。我們使用的場景一般是1個(gè)列族。9TimeStamp的概念TimeStamp對Hbase來說至關(guān)重要,因?yàn)樗菍?shí)現(xiàn)Hbase多版本的關(guān)鍵。在Hbase中使用不同的timestame來標(biāo)識(shí)相同rowkey行對應(yīng)的不通版本的數(shù)據(jù)。HBase中通過rowkey和columns確定的為一個(gè)存儲(chǔ)單元稱為cell。每個(gè)cell都保存著同一份數(shù)據(jù)的多個(gè)版本。版本通過時(shí)間戳來索引。時(shí)間戳的類型是64位整型。時(shí)間戳可以由hbase(在數(shù)據(jù)寫入時(shí)自動(dòng))賦值,此時(shí)時(shí)間戳是精確到毫秒的當(dāng)前系統(tǒng)時(shí)間。時(shí)間戳也可以由客戶顯式賦值。如果應(yīng)用程序要避免數(shù)據(jù)版本沖突,就必須自己生成具有唯一性的時(shí)間戳。每個(gè)cell中,不同版本的數(shù)據(jù)按照時(shí)間倒序排序,即最新的數(shù)據(jù)排在最前面。為了避免數(shù)據(jù)存在過多版本造成的的管理(包括存貯和索引)負(fù)擔(dān),hbase提供了兩種數(shù)據(jù)版本回收方式:保存數(shù)據(jù)的最后n個(gè)版本保存最近一段時(shí)間內(nèi)的版本(設(shè)置數(shù)據(jù)的生命周期TTL)。用戶可以針對每個(gè)列簇進(jìn)行設(shè)置。10ColumnQualifier(列限定符)的概念列限定符,你可以理解為是具體的列名,例如courses:history,courses:math都屬于courses這個(gè)列族,它們的列限定符分別是history和math。需要注意的是列限定符不是表Schema的一部分,你可以在插入數(shù)據(jù)的過程中動(dòng)態(tài)創(chuàng)建列。11單元格(Cell)由{rowkey,column(=+),version}唯一確定的單元。Cell中的數(shù)據(jù)是沒有類型的,全部是字節(jié)碼形式存貯。12存儲(chǔ)結(jié)構(gòu)-RegionsHBaseTable中的所有行按照RowKey的字典序排列。HBaseTables通過行鍵的范圍(rowkeyrange)被水平切分成多個(gè)Region,一個(gè)Region包含了在startkey和endkey之間的所有行。每個(gè)表一開始只有一個(gè)Region,隨著數(shù)據(jù)不斷增加,Region會(huì)不斷增大,當(dāng)增大到一個(gè)閥值的時(shí)候,Region就會(huì)等分為兩個(gè)新的Region。當(dāng)Table中的行不斷增多,就會(huì)有越來越多的Region。Region是HBase中分布式存儲(chǔ)和負(fù)載均衡的最小單元。這意味著不同的Region可以分布在不同的RegionServer上。但一個(gè)Region是不會(huì)拆分到多個(gè)Server上的。13存儲(chǔ)結(jié)構(gòu)-RegionServerRegionServer運(yùn)行在HDFS的DataNode上。它具有以下組件:WAL(WriteAheadLog,預(yù)寫日志):用于存儲(chǔ)尚未進(jìn)持久化存儲(chǔ)的數(shù)據(jù)記錄,以便在發(fā)生故障時(shí)進(jìn)行恢復(fù)。BlockCache:讀緩存。它將頻繁讀取的數(shù)據(jù)存儲(chǔ)在內(nèi)存中,如果存儲(chǔ)不足,它將按照最近最少使用原則清除多余的數(shù)據(jù)。MemStore:寫緩存。它存儲(chǔ)尚未寫入磁盤的新數(shù)據(jù),并會(huì)在數(shù)據(jù)寫入磁盤之前對其進(jìn)行排序。每個(gè)Region上的每個(gè)列族都有一個(gè)MemStore。HFile:將行數(shù)據(jù)按照Key\Values的形式存儲(chǔ)在文件系統(tǒng)上。RegionServer存取一個(gè)子表時(shí),會(huì)創(chuàng)建一個(gè)Region對象,然后對表的每個(gè)列族創(chuàng)建一個(gè)Store實(shí)例,每個(gè)Store會(huì)有0個(gè)或多個(gè)StoreFile與之對應(yīng),每個(gè)StoreFile則對應(yīng)一個(gè)HFile,HFile就是實(shí)際存儲(chǔ)在HDFS上的文件。14Hbase系統(tǒng)架構(gòu)HBase系統(tǒng)遵循Master/Salve架構(gòu),由三種不同類型的組件組成:Zookeeper保證任何時(shí)候,集群中只有一個(gè)Master;存貯所有Region的尋址入口;實(shí)時(shí)監(jiān)控RegionServer的狀態(tài),將RegionServer的上線和下線信息實(shí)時(shí)通知給Master;存儲(chǔ)HBase的Schema,包括有哪些Table,每個(gè)Table有哪些ColumnFamily等信息。Master為RegionServer分配Region;負(fù)責(zé)RegionServer的負(fù)載均衡;發(fā)現(xiàn)失效的RegionServer并重新分配其上的Region;GFS上的垃圾文件回收;處理Schema的更新請求。RegionServerRegionServer負(fù)責(zé)維護(hù)Master分配給它的Region,并處理發(fā)送到Region上的IO請求;RegionServer負(fù)責(zé)切分在運(yùn)行過程中變得過大的Region。15組件間的協(xié)作HBase使用ZooKeeper作為分布式協(xié)調(diào)服務(wù)來維護(hù)集群中的服務(wù)器狀態(tài)。Zookeeper負(fù)責(zé)維護(hù)可用服務(wù)列表,并提供服務(wù)故障通知等服務(wù):每個(gè)RegionServer都會(huì)在ZooKeeper上創(chuàng)建一個(gè)臨時(shí)節(jié)點(diǎn),Master通過Zookeeper的Watcher機(jī)制對節(jié)點(diǎn)進(jìn)行監(jiān)控,從而可以發(fā)現(xiàn)新加入的RegionServer或故障退出的RegionServer;所有Masters會(huì)競爭性地在Zookeeper上創(chuàng)建同一個(gè)臨時(shí)節(jié)點(diǎn),由于Zookeeper只能有一個(gè)同名節(jié)點(diǎn),所以必然只有一個(gè)Master能夠創(chuàng)建成功,此時(shí)該Master就是主Master,主Master會(huì)定期向Zookeeper發(fā)送心跳。備用Masters則通過Watcher機(jī)制對主HMaster所在節(jié)點(diǎn)進(jìn)行監(jiān)聽;如果主Master未能定時(shí)發(fā)送心跳,則其持有的Zookeeper會(huì)話會(huì)過期,相應(yīng)的臨時(shí)節(jié)點(diǎn)也會(huì)被刪除,這會(huì)觸發(fā)定義在該節(jié)點(diǎn)上的Watcher事件,使得備用的MasterServers得到通知。所有備用的MasterServers在接到通知后,會(huì)再次去競爭性地創(chuàng)建臨時(shí)節(jié)點(diǎn),完成主Master的選舉。16組件間的協(xié)作HBase使用ZooKeeper作為分布式協(xié)調(diào)服務(wù)來維護(hù)集群中的服務(wù)器狀態(tài)。Zookeeper負(fù)責(zé)維護(hù)可用服務(wù)列表,并提供服務(wù)故障通知等服務(wù):每個(gè)RegionServer都會(huì)在ZooKeeper上創(chuàng)建一個(gè)臨時(shí)節(jié)點(diǎn),Master通過Zookeeper的Watcher機(jī)制對節(jié)點(diǎn)進(jìn)行監(jiān)控,從而可以發(fā)現(xiàn)新加入的RegionServer或故障退出的RegionServer;所有Masters會(huì)競爭性地在Zookeeper上創(chuàng)建同一個(gè)臨時(shí)節(jié)點(diǎn),由于Zookeeper只能有一個(gè)同名節(jié)點(diǎn),所以必然只有一個(gè)Master能夠創(chuàng)建成功,此時(shí)該Master就是主Master,主Master會(huì)定期向Zookeeper發(fā)送心跳。備用Masters則通過Watcher機(jī)制對主HMaster所在節(jié)點(diǎn)進(jìn)行監(jiān)聽;如果主Master未能定時(shí)發(fā)送心跳,則其持有的Zookeeper會(huì)話會(huì)過期,相應(yīng)的臨時(shí)節(jié)點(diǎn)也會(huì)被刪除,這會(huì)觸發(fā)定義在該節(jié)點(diǎn)上的Watcher事件,使得備用的MasterServers得到通知。所有備用的MasterServers在接到通知后,會(huì)再次去競爭性地創(chuàng)建臨時(shí)節(jié)點(diǎn),完成主Master的選舉。17數(shù)據(jù)的讀寫流程簡述-寫入數(shù)據(jù)Client向RegionServer提交寫請求;RegionServer找到目標(biāo)Region;Region檢查數(shù)據(jù)是否與Schema一致;如果客戶端沒有指定版本,則獲取當(dāng)前系統(tǒng)時(shí)間作為數(shù)據(jù)版本;將更新寫入WALLog;將更新寫入Memstore;判斷Memstore存儲(chǔ)是否已滿,如果存儲(chǔ)已滿則需要flush為StoreHfile文件。18數(shù)據(jù)的讀寫流程簡述-讀取數(shù)據(jù)以下是客戶端首次讀寫HBase上數(shù)據(jù)的流程:客戶端從Zookeeper獲取META表所在的RegionServer;客戶端訪問META表所在的RegionServer,從META表中查詢到訪問行鍵所在的RegionServer,之后客
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電器供應(yīng)合同范本
- 苯酚銷售合同范本
- 收購紙箱合同范本
- 市政清運(yùn)合同范本
- Triundecanoin-d5-生命科學(xué)試劑-MCE
- Bilobol-Cardol-monoene-生命科學(xué)試劑-MCE
- AP23848-生命科學(xué)試劑-MCE
- 裝修合同范本范例
- 供水電合同范本
- 購買加工合同范本
- 2024版房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)內(nèi)容解讀
- 城市生物多樣性調(diào)查技術(shù)導(dǎo)則
- 高三數(shù)學(xué)試卷含答案
- 工資調(diào)級制度模版(3篇)
- 2023年新疆省公務(wù)員錄用考試《行測》真題卷及答案解析
- 2024年國網(wǎng)公司企業(yè)文化與職業(yè)道德試考試題庫(含答案)
- 牙周牙髓聯(lián)合病變治療
- 機(jī)場食品配送應(yīng)急處理方案
- 醫(yī)院培訓(xùn)課件:《黃帝內(nèi)針臨床運(yùn)用》
- 語文新課標(biāo)“整本書閱讀”深度解讀及案例
- 地質(zhì)隊(duì)安全培訓(xùn)
評論
0/150
提交評論