華為云計(jì)算 云知識(shí) 【云小課】EI第25課 MRS基礎(chǔ)入門之HBase組件介紹
【云小課】EI第25課 MRS基礎(chǔ)入門之HBase組件介紹

HBase是一個(gè)開源的、面向列(Column-Oriented)、適合存儲(chǔ)海量非結(jié)構(gòu)化數(shù)據(jù)或半結(jié)構(gòu)化數(shù)據(jù)的、具備高可靠性、高性能、可靈活擴(kuò)展伸縮的、支持實(shí)時(shí)數(shù)據(jù)讀寫的分布式存儲(chǔ)系統(tǒng)。

存儲(chǔ)在HBase中的表的典型特征:

·         大表(BigTable):一個(gè)表可以有上億行,上百萬列

·         面向列:面向列(族)的存儲(chǔ)、檢索與權(quán)限控制

·         稀疏:表中為空(null)的列不占用存儲(chǔ)空間

云小課logo.png

HBase結(jié)構(gòu)

HBase主要由主備Master進(jìn)程和多個(gè)RegionServer進(jìn)程組成。

image010.png

 

名稱

描述

Master

又叫HMaster,在HA模式下,包含主用Master和備用Master。

·         主用Master:負(fù)責(zé)HBaseRegionServer的管理,包括表的增刪改查;RegionServer 負(fù)載均衡 Region分布調(diào)整;Region分裂以及分裂后的Region分配;RegionServer失效后的Region 遷移 等。

·         備用Master:當(dāng)主用Master故障時(shí),備用Master將取代主用Master對(duì)外提供服務(wù)。故障恢復(fù)后,原主用Master降為備用。

Client

Client使用HBaseRPC機(jī)制與Master、RegionServer進(jìn)行通信。ClientMaster進(jìn)行管理類通信,與RegionServer進(jìn)行數(shù)據(jù)操作類通信。

RegionServer

RegionServer負(fù)責(zé)提供表數(shù)據(jù)讀寫等服務(wù),是HBase的數(shù)據(jù)處理和計(jì)算單元。

RegionServer一般與HDFS集群的DataNode部署在一起,實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)功能。

ZooKeeper集群

ZooKeeperHBase集群中各進(jìn)程提供分布式協(xié)作服務(wù)。各RegionServer將自己的信息注冊(cè)到ZooKeeper中,主用Master據(jù)此感知各個(gè)RegionServer的健康狀態(tài)。

HDFS集群

HDFSHBase提供高可靠的文件存儲(chǔ)服務(wù),HBase的數(shù)據(jù)全部存儲(chǔ)在HDFS中。

 

HBase原理

HBase數(shù)據(jù)模型

HBase以表的形式存儲(chǔ)數(shù)據(jù),數(shù)據(jù)模型如下圖所示。表中的數(shù)據(jù)劃分為多個(gè)Region,并由Master分配給對(duì)應(yīng)的RegionServer進(jìn)行管理。

每個(gè)Region包含了表中一段RowKey區(qū)間范圍內(nèi)的數(shù)據(jù),HBase的一張數(shù)據(jù)表開始只包含一個(gè)Region,隨著表中數(shù)據(jù)的增多,當(dāng)一個(gè)Region的大小達(dá)到容量上限后會(huì)分裂成兩個(gè)Region。您可以在創(chuàng)建表時(shí)定義RegionRowKey區(qū)間,或者在配置文件中定義Region的大小。

 

image012.png

名稱

描述

RowKey

行鍵,相當(dāng)于關(guān)系表的主鍵,每一行數(shù)據(jù)的唯一標(biāo)識(shí)。字符串、整數(shù)、二進(jìn)制串都可以作為RowKey。所有記錄按照RowKey排序后存儲(chǔ)。

Timestamp

每次數(shù)據(jù)操作對(duì)應(yīng)的時(shí)間戳,數(shù)據(jù)按時(shí)間戳區(qū)分版本,每個(gè)Cell的多個(gè)版本的數(shù)據(jù)按時(shí)間倒序存儲(chǔ)。

Cell

HBase最小的存儲(chǔ)單元,由KeyValue組成。Keyrow、column family、column qualifier、timestamp、type、MVCC version6個(gè)字段組成。Value就是對(duì)應(yīng)存儲(chǔ)的二進(jìn)制數(shù)據(jù)對(duì)象。

Column Family

列族,一個(gè)表在水平方向上由一個(gè)或多個(gè)Column Family組成。一個(gè)CFColumn Family)可以由任意多個(gè)Column組成。ColumnCF下的一個(gè)標(biāo)簽,可以在寫入數(shù)據(jù)時(shí)任意添加,因此CF支持動(dòng)態(tài)擴(kuò)展,無需預(yù)先定義Column的數(shù)量和類型。HBase中表的列非常稀疏,不同行的列的個(gè)數(shù)和類型都可以不同。此外,每個(gè)CF都有獨(dú)立的生存周期(TTL)??梢灾粚?duì)行上鎖,對(duì)行的操作始終是原始的。

Column

列,與傳統(tǒng)的 數(shù)據(jù)庫 類似,HBase的表中也有列的概念,列用于表示相同類型的數(shù)據(jù)。

 

RegionServer數(shù)據(jù)存儲(chǔ)

RegionServer主要負(fù)責(zé)管理由HMaster分配的Region,RegionServer的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)如下所示。

image014.png

名稱

描述

Store

一個(gè)Region由一個(gè)或多個(gè)Store組成,每個(gè)Store對(duì)應(yīng)圖1-2中的一個(gè)Column Family。

MemStore

一個(gè)Store包含一個(gè)MemStoreMemStore緩存客戶端向Region插入的數(shù)據(jù),當(dāng)RegionServer中的MemStore大小達(dá)到配置的容量上限時(shí),RegionServer會(huì)將MemStore中的數(shù)據(jù)“flush”HDFS中。

StoreFile

MemStore的數(shù)據(jù)flushHDFS后成為StoreFile,隨著數(shù)據(jù)的插入,一個(gè)Store會(huì)產(chǎn)生多個(gè)StoreFile,當(dāng)StoreFile的個(gè)數(shù)達(dá)到配置的最大值時(shí),RegionServer會(huì)將多個(gè)StoreFile合并為一個(gè)大的StoreFile。

HFile

HFile定義了StoreFile在文件系統(tǒng)中的存儲(chǔ)格式,它是當(dāng)前HBase系統(tǒng)中StoreFile的具體實(shí)現(xiàn)。

HLog

HLog日志保證了當(dāng)RegionServer故障的情況下用戶寫入的數(shù)據(jù)不丟失,RegionServer的多個(gè)Region共享一個(gè)相同的HLog

 

元數(shù)據(jù)表

元數(shù)據(jù)表是HBase中一種特殊的表,用來幫助Client定位到具體的Region。元數(shù)據(jù)表包括hbase:meta表,用來記錄用戶表的Region信息,例如,Region位置、起始RowKey及結(jié)束RowKey等信息。元數(shù)據(jù)表和用戶表的映射關(guān)系如下圖所示。

image016.png

數(shù)據(jù)操作流程

image018.png

1.    對(duì)HBase進(jìn)行增、、改、查數(shù)據(jù)操作時(shí),HBase Client首先連接ZooKeeper獲得hbase:meta表所在RegionServer的信息(涉及namespace級(jí)別修改的,比如創(chuàng)建表、刪除表需要訪問HMaster更新meta信息)。

2.    HBase Client連接到包含對(duì)應(yīng)的hbase:meta表的Region所在的RegionServer,并獲得相應(yīng)的用戶表的Region所在的RegionServer位置信息。

3.    HBase Client連接到對(duì)應(yīng)的用戶表Region所在的RegionServer,并將數(shù)據(jù)操作命令發(fā)送給該RegionServerRegionServer接收并執(zhí)行該命令從而完成本次數(shù)據(jù)操作。

HBase操作示例

在華為云MRS集群中,您可以通過連接HBase客戶端實(shí)現(xiàn)創(chuàng)建表,往表中插入數(shù)據(jù),修改表,讀取表數(shù)據(jù),刪除表中數(shù)據(jù)以及刪除表的功能。

MRS集群的創(chuàng)建可參考創(chuàng)建集群。

1.    安裝集群客戶端后,登錄客戶端。

cd /opt/client/

source bigdata_env

kinit hbaseuser   #集群未開啟Kerberos認(rèn)證忽略

2.    執(zhí)行命令進(jìn)入HBase Shell。

hbase shell

 

hbase:001:0>

hbase:002:0>

3.    HBase中創(chuàng)建一個(gè)表并寫入數(shù)據(jù),例如創(chuàng)建一個(gè)學(xué)生信息表。

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'

4.    執(zhí)行命令查詢某學(xué)生的數(shù)據(jù)。

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)

5.    刪除某個(gè)表。

disable'student_info'

drop 'student_info'

image020.png好了,本期云小課就介紹到這里,快去體驗(yàn)MapReduce(MRS)更多功能吧!猛戳這里