華為云GaussDB新產品特性亮相DTC2021,重磅新品開源預告
675
2025-04-01
HBase是一個開源的、面向列(Column-Oriented)、適合存儲海量非結構化數據或半結構化數據的、具備高可靠性、高性能、可靈活擴展伸縮的、支持實時數據讀寫的分布式存儲系統。
存儲在HBase中的表的典型特征:
大表(BigTable):一個表可以有上億行,上百萬列
面向列:面向列(族)的存儲、檢索與權限控制
稀疏:表中為空(null)的列不占用存儲空間
HBase結構
HBase主要由主備Master進程和多個RegionServer進程組成。
名稱
描述
Master
又叫HMaster,在HA模式下,包含主用Master和備用Master。
主用Master:負責HBase中RegionServer的管理,包括表的增刪改查;RegionServer的負載均衡,Region分布調整;Region分裂以及分裂后的Region分配;RegionServer失效后的Region遷移等。
備用Master:當主用Master故障時,備用Master將取代主用Master對外提供服務。故障恢復后,原主用Master降為備用。
Client
Client使用HBase的RPC機制與Master、RegionServer進行通信。Client與Master進行管理類通信,與RegionServer進行數據操作類通信。
RegionServer
RegionServer負責提供表數據讀寫等服務,是HBase的數據處理和計算單元。
RegionServer一般與HDFS集群的DataNode部署在一起,實現數據的存儲功能。
ZooKeeper集群
ZooKeeper為HBase集群中各進程提供分布式協作服務。各RegionServer將自己的信息注冊到ZooKeeper中,主用Master據此感知各個RegionServer的健康狀態。
HDFS集群
HDFS為HBase提供高可靠的文件存儲服務,HBase的數據全部存儲在HDFS中。
HBase原理
HBase數據模型
HBase以表的形式存儲數據,數據模型如下圖所示。表中的數據劃分為多個Region,并由Master分配給對應的RegionServer進行管理。
每個Region包含了表中一段RowKey區間范圍內的數據,HBase的一張數據表開始只包含一個Region,隨著表中數據的增多,當一個Region的大小達到容量上限后會分裂成兩個Region。您可以在創建表時定義Region的RowKey區間,或者在配置文件中定義Region的大小。
名稱
描述
RowKey
行鍵,相當于關系表的主鍵,每一行數據的唯一標識。字符串、整數、二進制串都可以作為RowKey。所有記錄按照RowKey排序后存儲。
Timestamp
每次數據操作對應的時間戳,數據按時間戳區分版本,每個Cell的多個版本的數據按時間倒序存儲。
Cell
HBase最小的存儲單元,由Key和Value組成。Key由row、column family、column qualifier、timestamp、type、MVCC version這6個字段組成。Value就是對應存儲的二進制數據對象。
Column Family
列族,一個表在水平方向上由一個或多個Column Family組成。一個CF(Column Family)可以由任意多個Column組成。Column是CF下的一個標簽,可以在寫入數據時任意添加,因此CF支持動態擴展,無需預先定義Column的數量和類型。HBase中表的列非常稀疏,不同行的列的個數和類型都可以不同。此外,每個CF都有獨立的生存周期(TTL)。可以只對行上鎖,對行的操作始終是原始的。
Column
列,與傳統的數據庫類似,HBase的表中也有列的概念,列用于表示相同類型的數據。
RegionServer數據存儲
RegionServer主要負責管理由HMaster分配的Region,RegionServer的數據存儲結構如下所示。
名稱
描述
Store
一個Region由一個或多個Store組成,每個Store對應圖1-2中的一個Column Family。
MemStore
一個Store包含一個MemStore,MemStore緩存客戶端向Region插入的數據,當RegionServer中的MemStore大小達到配置的容量上限時,RegionServer會將MemStore中的數據“flush”到HDFS中。
StoreFile
MemStore的數據flush到HDFS后成為StoreFile,隨著數據的插入,一個Store會產生多個StoreFile,當StoreFile的個數達到配置的最大值時,RegionServer會將多個StoreFile合并為一個大的StoreFile。
HFile
HFile定義了StoreFile在文件系統中的存儲格式,它是當前HBase系統中StoreFile的具體實現。
HLog
HLog日志保證了當RegionServer故障的情況下用戶寫入的數據不丟失,RegionServer的多個Region共享一個相同的HLog。
元數據表
元數據表是HBase中一種特殊的表,用來幫助Client定位到具體的Region。元數據表包括“hbase:meta”表,用來記錄用戶表的Region信息,例如,Region位置、起始RowKey及結束RowKey等信息。元數據表和用戶表的映射關系如下圖所示。
數據操作流程
對HBase進行增、刪、改、查數據操作時,HBase Client首先連接ZooKeeper獲得“hbase:meta”表所在的RegionServer的信息(涉及namespace級別修改的,比如創建表、刪除表需要訪問HMaster更新meta信息)。
HBase Client連接到包含對應的“hbase:meta”表的Region所在的RegionServer,并獲得相應的用戶表的Region所在的RegionServer位置信息。
HBase Client連接到對應的用戶表Region所在的RegionServer,并將數據操作命令發送給該RegionServer,RegionServer接收并執行該命令從而完成本次數據操作。
HBase操作示例
在華為云MRS集群中,您可以通過連接HBase客戶端實現創建表,往表中插入數據,修改表,讀取表數據,刪除表中數據以及刪除表的功能。
MRS集群的創建可參考創建集群。
安裝集群客戶端后,登錄客戶端。
cd /opt/client/ source bigdata_env kinit hbaseuser #集群未開啟Kerberos認證忽略
執行命令進入HBase Shell。
hbase shell hbase:001:0> hbase:002:0>
在HBase中創建一個表并寫入數據,例如創建一個學生信息表。
create 'student_info',{NAME => 'i'} put 'student_info','2021001','i:name','xiaoming' put 'student_info','2021001','i:age','15' put 'student_info','2021001','i:address','shenzhen' put 'student_info','2021002','i:name','xiaohong' put 'student_info','2021002','i:age','16'
執行命令查詢某學生的數據。
scan'student_info',{STARTROW=>'2021001',STOPROW=>'2021001',COLUMNS=>['i:name','i:address']} ROW COLUMN+CELL 12005000201 column=i:name, timestamp=2021-06-22T21:32:05.638, value=xiaoming 1 row(s)
刪除某個表。
disable'student_info' drop 'student_info'
好了,本期云小課就介紹到這里,快去體驗MapReduce(MRS)更多功能吧!猛戳這里
HBase MapReduce 云小課
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。