




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單元3HBase的原理與架構1HBase的架構目錄HBase的模型2HBase的讀寫流程3
HBase的分布式架構優勢HBase作為一種分布式數據庫,其架構設計使其在海量數據的快速存儲和隨機訪問方面具有顯著優勢。通過數據副本機制和分區機制,HBase能夠輕松實現在線擴容、縮容和數據容災,從而成為大數據領域中Key-Value數據結構存儲的常用方案之一。此外,HBase還能夠通過分布式集群讀寫海量數據,這是傳統數據庫難以實現的。
本章學習目標本章旨在幫助讀者掌握HBase的數據模型、架構和讀寫流程。具體學習目標包括:掌握HBase數據模型及核心知識。理解HBase架構的原理。010204理解HBase的讀寫流程。03
HBase的邏輯模型HBase的邏輯模型以列為基本單位,多列構成一行。每行擁有唯一的行鍵(RowKey),相同行鍵的插入操作被視為對同一行的操作,多次插入操作實際上是對該行數據的更新操作。HBase表包含多個行,每行包含多個列,列中的值可以有多個版本,每個版本的值稱為一個單元格,每個單元格存儲的是該列不同時間的值。
HBase的數據模型01”HBase實際上是一個稀疏、多維、持久化存儲的映射表,采用行鍵(RowKey)、列簇(ColumnFamily)、列限定符(ColumnQualifier)和時間戳(Timestamp)進行索引。每個值都由未經解釋的字節組成byte[],沒有數據類型。用戶在表中存儲數據時,每一行都有一個可排序的行鍵和任意多的列。列簇支持動態擴展,用戶可以輕松地添加一個列簇或列,無需預先定義列的數量和類型。由于同一張表里的每一行數據都可以有截然不同的列,對于整個映射表的每行數據而言,有些列的值可以是空的,因此HBase是稀疏的。HBase的數據模型0102表HBase是一種列式存儲的分布式數據庫,其核心概念是表(Table)。與傳統關系型數據庫一樣,HBase的表也是由行和列組成的,但HBase的同一列可以存儲不同時刻的值,多個列可以組成一個列簇(ColumnFamily),這種組織形式主要是出于對HBase存取性能的考慮。行鍵每個HBase表中只能有一個行鍵,類似于主鍵。由于RowKey是HBase表的唯一標識,HBase表中的記錄是按照RowKey的字典序排列的,因此,RowKey的設計非常重要。在HBase中,為了高效地檢索數據,需要設計良好的RowKey來提高查詢性能。因為RowKey會被冗余存儲,所以長度不宜過長,否則既會占用大量的存儲空間,又會降低檢索效率。RowKey應該盡量均勻分布,避免產生熱點問題(即大量用戶訪問集中在一個或極少數節點,導致單臺節點超出自身承受能力)。另外,還需要保證RowKey的唯一性。數據的存儲規則是相近的數據存儲在一起。例如,RowKey的格式為、、和的網站名稱時,可以對網站名稱反轉后再進行存儲,反轉后為com.cqyti.www、com.cqyti.sxy、com.cqyti.dsj和com.cqyti.zngc。這樣,所有com.cqyti域名將會存儲在一起,避免子域名(即www、sxy、dsj、zngc)分散在各處。HBase的數據模型0304列簇HBase表中的每個列都歸屬于某個列簇,一個列簇中的所有列成員有著相同的前綴。例如,列anchor:和anchor:my.look.ca都是列簇anchor的成員。列簇是表的schema的一部分,必須在使用表之前定義列簇,但列卻不是必需的,寫數據的時候可以動態加入。一般將經常一起查詢的列放在一個列簇中,合理劃分列簇將減少查詢時加載到緩存的數據,提高查詢效率。由于跨列簇訪問非常低效,因此不應有太多的列簇。單元格HBase中通過RowKey和Column確定的存儲單元稱為單元格(Cell)。每個單元格都保存著同一份數據的多個版本。HBase的數據模型0504時間戳在HBase表中,通過行鍵、列簇和列名確定一個單元格。單元格中存儲的數據沒有數據類型,被視為byte[]字節數組。單元格中保存的數據的每個版本對應一個不同的時間戳,每次對一個單元格執行操作(新建、修改、刪除)時,HBase都將隱式地自動生成并存儲一個時間戳。時間戳一般是64位整型數據,可以由用戶自己賦值(自己生成唯一時間戳可以避免應用程序中出現數據版本沖突),也可以由HBase在數據寫入時自動賦值。一個單元格的不同版本根據時間戳進行降序存儲。因此,最新版本的數據可以被優先讀取,通常將記錄每次操作數據的時間戳記作數據的版本號。
HBase的物理模型雖然在邏輯模型中表可以被看作一個稀疏的行集合,但在物理層面,表是按列簇分開存儲的。HBase的列是按列簇分組的,HFile是面向列的物理文件,可以存放行的不同列。一個列簇的數據存放在多個HFile中,最重要的是一個列簇的數據會被同一個Region管理,物理上存放在一起。
HBase的Region模型HBase表中的所有行都按照RowKey的字典序排列,在行的方向上分割為多個Region。Region是HBase數據管理的基本單位,數據移動、數據的負載均衡及數據的分裂都是以Region為單位來進行的。HBase的表默認最初只有一個Region,隨著記錄數不斷增加而變大后,會逐漸分裂成多個Region,每個Region根據[startkey,endkey]的范圍來劃分,不同的Region會被Master分配給相應的RegionServer進行管理。
HBase的Region模型Region是HBase中分布式存儲和負載均衡的最小單元。
HBase的Region模型Region雖然是HBase中分布式存儲的最小單元,但并不是存儲的最小單元。Region由一個或多個Store組成,每個Store保存一個ColumnFamily。每個Store又由一個MemStore和零至多個StoreFile組成。MemStore代表寫緩存,StoreFile存儲在HDFS之上。1HBase的架構目錄HBase的模型2HBase的讀寫流程3
HBase的系統架構HBase采用Master/Slave架構搭建集群,屬于Hadoop生態系統的組件。HBase的系統架構由Client(客戶端)、HMaster(主節點)、HRegionServer(從節點)、ZooKeeper(協調服務模塊)等部分組成,并將數據存儲于HDFS中。
HBase的核心組件01ClientClient是整個HBase系統的入口,可以通過Client直接操作HBase。Client使用HBase的遠程過程調用協議(RemoteProcedureCallProtocol,RPC)機制與HMaster和HRegionServer進行通信。02ZooKeeper分布式HBase依賴于ZooKeeper集群,所有節點和客戶端必須能夠正常訪問ZooKeeper。HBase默認管理一個單點的ZooKeeper集群,HBase可以將ZooKeeper當作自身的一部分來啟動和關閉進程。03HMasterHBase中可以啟動多個HMaster,通過ZooKeeper的Master選舉機制保證總有一個HMaster在運行。HMaster管理HRegionServer的負載均衡,調整HRegion的分布。04HRegionServerHRegionServer主要負責響應用戶的I/O請求,在HDFS文件系統中讀寫數據,是HBase的核心模塊。HRegionServer內部管理了一系列HRegion,HRegion對應Table中的一個Region,HRegion由多個HStore組成。
HBase的核心組件05Write-Ahead-Log(WAL,預寫日志)是HBase的HRegionServer在處理數據插入和刪除過程中用于記錄操作內容的一種日志形式。大致過程如下:客戶端啟動一個操作來修改數據,每一處改動都被包裝進KeyValue對象實例中,使用遠程調用發送到ReginoServer對應這次改動的Region中。數據在HRegionServer中首先被寫入WAL,再被寫入MemStore,最后當MemStore達到一定的大小或到達指定的時刻之后,數據被異步地持久化到文件系統上。在這之前,數據是存儲在內存中的,如果HRegionServer崩潰了,那么內存的數據就沒有了。而如果有WAL,便可恢復數據。每個HRegionServer中都有一個HLog對象。HLog是一個實現WAL的類,在每次用戶操作寫入MemStore的同時,也會寫一份數據到HLog文件中,HLog文件會定期滾動出新的文件,并刪除舊的文件(已持久化到StoreFile中的數據)。當HRegionServer意外終止后,HMaster會通過ZooKeeper感知,HMaster首先會處理遺留的HLog文件,將其中不同Region的Log數據進行拆分,分別放到相應的Region目錄下,再將失效的Region重新分配給HRegionServer。HRegionServer在加載Region的過程中,將發現有歷史HLog需要處理,因此會重置HLog中的數據到MemStore中,最后刷新至StoreFile文件中完成數據恢復。1HBase的架構目錄HBase的模型2HBase的讀寫流程3
HBase的寫流程01當用戶向HRegionServer發起HTable.put請求,即寫入數據請求時,系統會將請求交給對應的HRegion實例處理。客戶端首先訪問ZooKeeper集群,查詢-ROOT-表Region所在的RegionServer地址信息。然后,客戶端連接相應的RegionServer,并訪問.meta.表,根據寫入的命名空間、表名和行鍵找到對應的Region信息。為了達到持久化和恢復的目的,將數據先寫至HLog中,再寫入MemStore。當MemStore達到預設閾值后,創建一個新的MemStore。舊的MemStore會加入Flush隊列,由單獨的線程Flush至磁盤,形成一個StoreFile。
HBase的讀流程當用戶向HRegionServer發起讀取數據請求時,系統會將請求交給對應的HRegion實例處理。客戶端首先訪問ZooKeeper集群,查找元數據表
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 某年度飛機及配件市場分析及競爭策略分析報告
- 某年度賽車市場分析及競爭策略分析報告
- 餐廳預定協議
- 釣魚愛好者專用魚塘租賃合同
- 三年級上冊美術家長參與計劃
- 計算器采購合同
- 申請終止運輸合同協議書
- 一年級下冊科學主題活動計劃
- 小學體育鍛煉與健康知識培訓計劃
- 六年級數學教學計劃評估標準
- 北京版二年級英語下冊(全套)課件
- 檢驗科生化SOP文件
- 醫療器械臨床試驗質量管理規范試題
- 運動訓練專業畢業論文范文
- 林德氣體(江西)有限公司星火有機硅配套空壓制氮項目環境影響評價報告書
- 城市軌道交通行車組織教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案課件合集
- 項目施工條件分析
- 2022秋期版2208國開電大專科《政治學原理》網上形考(任務1至4)試題及答案
- TSG 81-2022 場(廠)內專用機動車輛安全技術規程
- TLJ300銅扁線連續擠壓生產線使用說明書NEW1復習課程
- 瓷磚店業務員提成方案計劃
評論
0/150
提交評論