溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

(第6.2篇)大數(shù)據(jù)發(fā)展背后的強(qiáng)力推手——HBase分布式存儲系統(tǒng)

發(fā)布時(shí)間:2020-05-29 10:50:57 來源:網(wǎng)絡(luò) 閱讀:729 作者:I加加 欄目:大數(shù)據(jù)

本篇接著6.1 繼續(xù)講HBase。

    

4. Hbase容錯(cuò)與恢復(fù)

(第6.2篇)大數(shù)據(jù)發(fā)展背后的強(qiáng)力推手——HBase分布式存儲系統(tǒng) 

每個(gè)HRegionServer中都有一個(gè)HLog對象,HLog是一個(gè)實(shí)現(xiàn)Write Ahead Log的類,在每次用戶操作寫入MemStore的同時(shí),也會寫一份數(shù)據(jù)到HLog文件中(HLog文件格式見后續(xù)),HLog文件定期會滾動出新的,并刪除舊的文件(已持久化到StoreFile中的數(shù)據(jù))。當(dāng)HRegionServer意外終止后,HMaster會通過Zookeeper感知到,HMaster首先會處理遺留的 HLog文件,將其中不同Region的Log數(shù)據(jù)進(jìn)行拆分,分別放到相應(yīng)region的目錄下,然后再將失效的region重新分配,領(lǐng)取到這些region的HRegionServer在Load Region的過程中,會發(fā)現(xiàn)有歷史HLog需要處理,因此會Replay HLog中的數(shù)據(jù)到MemStore中,然后flush到StoreFiles,完成數(shù)據(jù)恢復(fù)

Hbase容錯(cuò)性:

1) Master容錯(cuò):Zookeeper重新選擇一個(gè)新的Master

Master過程中,數(shù)據(jù)讀取仍照常進(jìn)行;

master過程中,region切分、負(fù)載均衡等無法進(jìn)行;

2) RegionServer容錯(cuò):定時(shí)向Zookeeper匯報(bào)心跳,如果一旦時(shí)間內(nèi)未出現(xiàn)心跳,Master將該RegionServer上的Region重新分配到其他RegionServer上,失效服務(wù)器上“預(yù)寫”日志由主服務(wù)器進(jìn)行分割并派送給新的RegionServer

3) Zookeeper容錯(cuò):Zookeeper是一個(gè)可靠地服務(wù),一般配置3或5個(gè)Zookeeper實(shí)例

Region定位流程:

(第6.2篇)大數(shù)據(jù)發(fā)展背后的強(qiáng)力推手——HBase分布式存儲系統(tǒng) 

尋找RegionServer過程:ZooKeeper--> -ROOT-(單Region)--> .META.--> 用戶表

1) -ROOT-

表包含.META.表所在的region列表,該表只會有一個(gè)Region;

Zookeeper中記錄了-ROOT-表的location。

2) .META.

表包含所有的用戶空間region列表,以及RegionServer的服務(wù)器地址。

5. Hbase基礎(chǔ)操作

1) 進(jìn)入hbase shell console

$HBASE_HOME/bin/hbase shell

的管理

2) 查看有哪些表

list

3) 創(chuàng)建表

# 語法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>}

 

# 例如:創(chuàng)建表t1,有兩個(gè)family name:f1,f2,且版本數(shù)均為2

> create 't1',{NAME => 'f1', VERSIONS => 2},{NAME => 'f2', VERSIONS => 2}

4) 刪除表

# 分兩步:首先disable,然后drop

 

# 例如:刪除表t1

> disable 't1'

> drop 't1'

5) 查看表的結(jié)構(gòu)

# 語法:describe <table>

 

# 例如:查看表t1的結(jié)構(gòu)

> describe 't1'

6) 修改表結(jié)構(gòu)

# 修改表結(jié)構(gòu)必須先disable

 

# 語法:alter 't1', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}

 

# 例如:修改表test1的cf的TTL為180天

> disable 'test1'

> alter 'test1',{NAME=>'body',TTL=>'15552000'},{NAME=>'meta', TTL=>'15552000'}

> enable 'test1'

權(quán)限管理:

1) 分配權(quán)限

# 語法 : grant <user> <permissions> <table> <column family> <column qualifier> 參數(shù)后面用逗號分隔

# 權(quán)限用五個(gè)字母表示: "RWXCA".

# READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')

 

# 例如,給用戶‘test'分配對表t1有讀寫的權(quán)限,

> grant 'test','RW','t1'

2) 查看權(quán)限

# 語法:user_permission <table>

 

# 例如,查看表t1的權(quán)限列表

> user_permission 't1'

3) 收回權(quán)限

# 與分配權(quán)限類似,語法:revoke <user> <table> <column family> <column qualifier>

 

# 例如,收回test用戶在表t1上的權(quán)限

> revoke 'test','t1'

表數(shù)據(jù)的增刪改查:

1) 添加數(shù)據(jù)

# 語法:put <table>,<rowkey>,<family:column>,<value>,<timestamp>

 

# 例如:給表t1的添加一行記錄:rowkey是rowkey001,family name:f1,column name:col1,value:value01,timestamp:系統(tǒng)默認(rèn)

> put 't1','rowkey001','f1:col1','value01'

2) 查詢數(shù)據(jù)——查詢某記錄

# 語法:get <table>,<rowkey>,[<family:column>,....]

 

# 例如:查詢表t1,rowkey001中的f1下的col1的值

> get 't1','rowkey001', 'f1:col1'

# 或者:

> get 't1','rowkey001', {COLUMN=>'f1:col1'}

 

# 查詢表t1,rowke002中的f1下的所有列值

hbase(main)> get 't1','rowkey001'

3) 查詢數(shù)據(jù)——掃描表

# 語法:scan <table>, {COLUMNS => [ <family:column>,.... ], LIMIT => num}

# 另外,還可以添加STARTROW、TIMERANGE和FITLER等高級功能

 

# 例如:掃描表t1的前5條數(shù)據(jù)

> scan 't1',{LIMIT=>5}

4) 查詢表中的數(shù)據(jù)行數(shù)

# 語法:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum}

# INTERVAL設(shè)置多少行顯示一次及對應(yīng)的rowkey,默認(rèn)1000;CACHE每次去取的緩存區(qū)大小,默認(rèn)是10,調(diào)整該參數(shù)可提高查詢速度

 

# 例如,查詢表t1中的行數(shù),每100條顯示一次,緩存區(qū)為500

> count 't1', {INTERVAL => 100, CACHE => 500}

5) 刪除數(shù)據(jù)——刪除行中的某個(gè)列

# 語法:delete <table>, <rowkey>,  <family:column> , <timestamp>,必須指定列名

 

# 例如:刪除表t1,rowkey001中的f1:col1的數(shù)據(jù)

> delete 't1','rowkey001','f1:col1'

6) 刪除數(shù)據(jù)——刪除行

# 語法:deleteall <table>, <rowkey>,  <family:column> , <timestamp>,可以不指定列名,刪除整行數(shù)據(jù)

 

# 例如:刪除表t1,rowk001的數(shù)據(jù)

> deleteall 't1','rowkey001'

7) 刪除數(shù)據(jù)——刪除中的所有數(shù)據(jù)

# 語法: truncate <table>

# 其具體過程是:disable table -> drop table -> create table

 

# 例如:刪除表t1的所有數(shù)據(jù)

> truncate 't1'

Region管理:

1) 移動Region

# 語法:move 'encodeRegionName', 'ServerName'

# encodeRegionName指的regioName后面的編碼,ServerName指的是master-status的Region Servers列表

 

# 示例

>move '4343995a58be8e5bbc739', 'db-41.xxx.xxx.org,60020,139'

2) 開啟/關(guān)閉region

# 語法:balance_switch true|false

hbase(main)> balance_switch

3) 手動split

# 語法:split 'regionName', 'splitKey'

4) 手動觸發(fā)major compaction

#語法:

#Compact all regions in a table:

> major_compact 't1'

#Compact an entire region:

> major_compact 'r1'

#Compact a single column family within a region:

> major_compact 'r1', 'c1'

#Compact a single column family within a table:

> major_compact 't1', 'c1'


(第6.2篇)大數(shù)據(jù)發(fā)展背后的強(qiáng)力推手——HBase分布式存儲系統(tǒng)


    此時(shí)你已經(jīng)學(xué)會了安裝hadoop集群,了解了HDFS文件系統(tǒng),MapReduce計(jì)算框架和Zookeeper協(xié)作服務(wù)(Zookeeper數(shù)據(jù)模型、訪問控制、應(yīng)用場景),今天學(xué)完了HBase,下一篇我們介紹hadoop的數(shù)據(jù)庫工具——Hive。



如何用4個(gè)月學(xué)會Hadoop開發(fā)并找到年薪25萬工作?

 

免費(fèi)分享一套17年最新Hadoop大數(shù)據(jù)教程100Hadoop大數(shù)據(jù)必會面試題

因?yàn)殒溄咏?jīng)常被和諧,需要的朋友請加微信 ganshiyun666 來獲取最新下載鏈接,注明“51CTO”

 

教程已幫助300+人成功轉(zhuǎn)型Hadoop開發(fā),90%起薪超過20K,工資比之前翻了一倍。

百度Hadoop核心架構(gòu)師親自錄制

內(nèi)容包括0基礎(chǔ)入門、Hadoop生態(tài)系統(tǒng)、真實(shí)商業(yè)項(xiàng)目實(shí)戰(zhàn)3大部分。其中商業(yè)案例可以讓你接觸真實(shí)的生產(chǎn)環(huán)境,訓(xùn)練自己的開發(fā)能力。

(第6.2篇)大數(shù)據(jù)發(fā)展背后的強(qiáng)力推手——HBase分布式存儲系統(tǒng)


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI