分布式數據庫HBase 課件 單元3 HBase的原理與架構;單元4 HBaseShell_第1頁
分布式數據庫HBase 課件 單元3 HBase的原理與架構;單元4 HBaseShell_第2頁
分布式數據庫HBase 課件 單元3 HBase的原理與架構;單元4 HBaseShell_第3頁
分布式數據庫HBase 課件 單元3 HBase的原理與架構;單元4 HBaseShell_第4頁
分布式數據庫HBase 課件 單元3 HBase的原理與架構;單元4 HBaseShell_第5頁
已閱讀5頁,還剩38頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單元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集群,查找元數據表在哪個RegionServer上,并訪問對應的RegionServer的元數據表中的數據,查找要操作的RowKey所在表對應的Region所在的RegionServer。隨后,客戶端讀取RegionServer上的Region數據。客戶端定位到真正的數據所在的Region時,先從MemStore查找,如果沒找到數據,但表設置了塊緩存(BlockCache)功能,那么再從塊緩存查找;如果塊緩存還沒有,再從StoreFile查找,查找到數據的同時對數據進行緩存處理。02謝謝大家單元4HBaseShell目錄01HBaseShell基礎與入門02數據定義語言(DDL)操作03數據操縱語言(DML)操作04綜合應用與最佳實踐01HBaseShell基礎與入門HBaseShell的功能與核心價值HBaseShell是一個封裝了JavaAPI的JRuby應用軟件,為HBase用戶提供強大的交互式環境,可執行各種數據庫操作,如創建、刪除和管理表,插入、查詢和刪除數據等。核心功能概述01在大數據領域,HBase適用于存儲大規模非結構化數據,具有快速的數據讀寫性能。HBaseShell能讓用戶高效地與HBase數據庫交互,滿足大數據處理的需求,提高數據操作效率。大數據場景應用優勢02Shell環境啟動與基本配置在HMaster主機上輸入`hbaseshell`命令,即可進入shell命令環境,開啟與HBase數據庫的交互。啟動客戶端環境使用`version`命令能夠查看當前HBase的版本,了解軟件的具體情況,便于進行版本管理和功能使用。查看版本信息輸入`status`命令可以查看集群節點的狀態,確保集群正常運行,為后續操作提供穩定環境。驗證集群狀態010203命名空間的管理與應用場景通過`list_namespace`命令能查看所有的命名空間,使用`list_namespace_tables'ns1'`可查看命名空間ns1中的所有表,便于對命名空間進行管理和監控。查看命名空間命名空間與關系型數據庫系統中的數據庫類似,是表的邏輯分組,可對其進行創建、刪除、更改等操作。命名空間概念解析使用`create_namespace'ns1'`命令可創建一個名為ns1的命名空間,實現表的邏輯分組管理。創建命名空間02數據定義語言(DDL)操作表結構的創建與參數設置create命令語法詳解在HBaseShell中,使用create命令創建表,語法為create'表名','列族1','列族2'等。如創建學生信息表:create'Student','StuInfo','Grades'。緩存參數配置BLOCKCACHE參數可控制讀取數據時是否允許緩存,如{NAME=>'Grades',BLOCKCACHE=>true},表示Grades列族讀取數據時允許緩存。多列族定義演示版本控制參數配置可在創建表時指定多個列族,如上述創建Student表時指定了StuInfo和Grades兩個列族,方便存儲不同類型的數據。通過VERSIONS參數可設置單元格存儲的數據版本數,如create'Student',{NAME=>'StuInfo',VERSIONS=>3},表示StuInfo列族單元格可存最新三版數據。表的查看與結構分析01list命令可查看所有的表名,如執行list命令后,可顯示出Student、my1:student、ns1:Student等表名。02describe(或縮寫desc)命令用于查看一個表的詳情,能獲取表的結構信息,如列族等相關屬性。03使用list_namespace_tables'命名空間名'可查看指定命名空間下的所有表,如list_namespace_tables'ns1'可查看ns1命名空間下的表。使用list命令查看表列表使用describe命令查看表詳情結合命名空間篩選表范圍表結構的動態修改與優化使用alter命令可增加或刪除列族,實現表結構的動態調整,以適應不同的數據存儲需求。alter命令增刪列族在修改已存有數據的列族參數時,HBase會對所有數據進行更改,數據量很大時,更改速度會很慢。數據量對修改效率的影響能通過alter命令修改列族的參數信息,如將Grades列族的VERSIONS參數改為3:alter'Student',{NAME=>'Grades',VERSIONS=>3}。alter命令調整參數表的禁用與刪除操作在刪除表之前需先禁用表,如執行disable'Student'可禁用Student表。使用disable命令禁用表01表禁用后,使用drop命令可將其刪除,如drop'Student'可刪除Student表。使用drop命令刪除表02truncate命令相當于先禁用表,再刪除表,最后重新創建表結構,適用于僅需清空表中數據的場景。truncate命令清空表數據0303數據操縱語言(DML)操作數據的插入與版本控制使用put命令可插入一行數據,如“hbase(main):006:0>put'Student','001','StuInfo:Name','Tom',1”,將學生姓名插入到指定行鍵和列族中。Put命令插入單行數據1可多次使用put命令為同一行插入多列數據,如依次插入學生的年齡、性別、成績等信息,實現一行多列數據的插入。Put命令插入多列數據2在HBase中,時間戳標識數據的版本,若不指定時間戳則默認使用當前時間。設置列族的VERSIONS參數時,put操作可保存多個數據版本,如VERSIONS=>3表示單元格可存儲最新的三版數據。時間戳與版本控制3精準查詢:Get命令的應用通過設置相關參數,get命令能獲取指定版本的數據,滿足對特定版本數據的查詢需求。獲取指定版本數據get命令也可指定列族,獲取一行中對應列族的數據,如“hbase(main):033:0>get'Student','001','StuInfo'”,可獲取001行鍵的StuInfo列族的所有數據。基于列族的精準查詢get命令可獲取表中一行的數據,必須指定表名和行鍵,如“hbase(main):025:0>get'Student','001'”,能獲取Student表中001行鍵的一行數據。基于行鍵的精準查詢范圍掃描:Scan命令的高級用法使用scan命令可掃描全表數據,如“hbase(main):034:0>scan'Student'”,能獲取Student表的所有行數據。全表掃描scan命令可加限定條件進行列族過濾,如“hbase(main):035:0>scan'Student',{COLUMN=>"StuInfo"}”,可查詢Student表StuInfo列族的所有數據。列族過濾掃描可使用STARTROW和ENDROW限定行鍵范圍,如“hbase(main):039:0>Scan'Student',{STARTROW=>'001',ENDROW=>'002'}”,查詢行鍵在指定范圍內的數據,不包含ENDROW。行鍵范圍查詢使用LIMIT參數可限定查詢的數據條數,如“hbase(main):037:0>scan'Student',{LIMIT=>1}”,只查詢一條數據。結果條數限制數據的刪除策略與機制delete命令可刪除一個單元格或者某行列族數據,如“hbase(main):015:0>delete'Student','002','Grades:Computer'”可刪除指定單元格數據,“hbase(main):016:0>delete'Student','002','Grades'”可刪除指定列族數據。Delete命令刪除數據deleteall命令用于刪除一行數據,如“hbase(main):017:0>deleteall'Student','001'”,可刪除Student表001行鍵的這一行數據。Deleteall命令刪除數據delete不會馬上刪除數據,只是將數據打上刪除標簽,在合并數據時才會真正刪除。刪除時若指定時間戳,則刪除小于等于該指定時間戳的數據。數據刪除底層邏輯與合并機制04綜合應用與最佳實踐從建表到數據操作的完整流程使用DDL的create命令創建學生信息表Student,如“hbase(main):007:0>create'Student','StuInfo','Grades'”,指定列族為StuInfo和Grades。創建學生信息表運用DML的put命令插入學生數據,例如“hbase(main):006:0>put'Student','001

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論