本篇接著6.1 繼續(xù)講HBase。
專(zhuān)業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來(lái)客戶(hù)和效益!創(chuàng)新互聯(lián)公司為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,成都做網(wǎng)站、網(wǎng)站建設(shè)負(fù)責(zé)任的成都網(wǎng)站制作公司!
4. Hbase容錯(cuò)與恢復(fù)
每個(gè)HRegionServer中都有一個(gè)HLog對(duì)象,HLog是一個(gè)實(shí)現(xiàn)Write Ahead Log的類(lèi),在每次用戶(hù)操作寫(xiě)入MemStore的同時(shí),也會(huì)寫(xiě)一份數(shù)據(jù)到HLog文件中(HLog文件格式見(jiàn)后續(xù)),HLog文件定期會(huì)滾動(dòng)出新的,并刪除舊的文件(已持久化到StoreFile中的數(shù)據(jù))。當(dāng)HRegionServer意外終止后,HMaster會(huì)通過(guò)Zookeeper感知到,HMaster首先會(huì)處理遺留的 HLog文件,將其中不同Region的Log數(shù)據(jù)進(jìn)行拆分,分別放到相應(yīng)region的目錄下,然后再將失效的region重新分配,領(lǐng)取到這些region的HRegionServer在Load Region的過(guò)程中,會(huì)發(fā)現(xiàn)有歷史HLog需要處理,因此會(huì)Replay HLog中的數(shù)據(jù)到MemStore中,然后flush到StoreFiles,完成數(shù)據(jù)恢復(fù)
Hbase容錯(cuò)性:
1) Master容錯(cuò):Zookeeper重新選擇一個(gè)新的Master
l 無(wú)Master過(guò)程中,數(shù)據(jù)讀取仍照常進(jìn)行;
l 無(wú)master過(guò)程中,region切分、負(fù)載均衡等無(wú)法進(jìn)行;
2) RegionServer容錯(cuò):定時(shí)向Zookeeper匯報(bào)心跳,如果一旦時(shí)間內(nèi)未出現(xiàn)心跳,Master將該RegionServer上的Region重新分配到其他RegionServer上,失效服務(wù)器上“預(yù)寫(xiě)”日志由主服務(wù)器進(jìn)行分割并派送給新的RegionServer
3) Zookeeper容錯(cuò):Zookeeper是一個(gè)可靠地服務(wù),一般配置3或5個(gè)Zookeeper實(shí)例
Region定位流程:
尋找RegionServer過(guò)程:ZooKeeper--> -ROOT-(單Region)--> .META.--> 用戶(hù)表
1) -ROOT-
l 表包含.META.表所在的region列表,該表只會(huì)有一個(gè)Region;
l Zookeeper中記錄了-ROOT-表的location。
2) .META.
l 表包含所有的用戶(hù)空間region列表,以及RegionServer的服務(wù)器地址。
1) 進(jìn)入hbase shell console
$HBASE_HOME/bin/hbase shell |
表的管理:
2) 查看有哪些表
list |
3) 創(chuàng)建表
# 語(yǔ)法: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)
# 語(yǔ)法:describe <table>
# 例如:查看表t1的結(jié)構(gòu) > describe 't1' |
6) 修改表結(jié)構(gòu)
# 修改表結(jié)構(gòu)必須先disable
# 語(yǔ)法: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)限
# 語(yǔ)法 : grant <user> <permissions> <table> <column family> <column qualifier> 參數(shù)后面用逗號(hào)分隔 # 權(quán)限用五個(gè)字母表示: "RWXCA". # READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')
# 例如,給用戶(hù)‘test'分配對(duì)表t1有讀寫(xiě)的權(quán)限, > grant 'test','RW','t1' |
2) 查看權(quán)限
# 語(yǔ)法:user_permission <table>
# 例如,查看表t1的權(quán)限列表 > user_permission 't1' |
3) 收回權(quán)限
# 與分配權(quán)限類(lèi)似,語(yǔ)法:revoke <user> <table> <column family> <column qualifier>
# 例如,收回test用戶(hù)在表t1上的權(quán)限 > revoke 'test','t1' |
表數(shù)據(jù)的增刪改查:
1) 添加數(shù)據(jù)
# 語(yǔ)法: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) 查詢(xún)數(shù)據(jù)——查詢(xún)某行記錄
# 語(yǔ)法:get <table>,<rowkey>,[<family:column>,....]
# 例如:查詢(xún)表t1,rowkey001中的f1下的col1的值 > get 't1','rowkey001', 'f1:col1' # 或者: > get 't1','rowkey001', {COLUMN=>'f1:col1'}
# 查詢(xún)表t1,rowke002中的f1下的所有列值 hbase(main)> get 't1','rowkey001' |
3) 查詢(xún)數(shù)據(jù)——掃描表
# 語(yǔ)法:scan <table>, {COLUMNS => [ <family:column>,.... ], LIMIT => num} # 另外,還可以添加STARTROW、TIMERANGE和FITLER等高級(jí)功能
# 例如:掃描表t1的前5條數(shù)據(jù) > scan 't1',{LIMIT=>5} |
4) 查詢(xún)表中的數(shù)據(jù)行數(shù)
# 語(yǔ)法:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum} # INTERVAL設(shè)置多少行顯示一次及對(duì)應(yīng)的rowkey,默認(rèn)1000;CACHE每次去取的緩存區(qū)大小,默認(rèn)是10,調(diào)整該參數(shù)可提高查詢(xún)速度
# 例如,查詢(xún)表t1中的行數(shù),每100條顯示一次,緩存區(qū)為500 > count 't1', {INTERVAL => 100, CACHE => 500} |
5) 刪除數(shù)據(jù)——?jiǎng)h除行中的某個(gè)列值
# 語(yǔ)法:delete <table>, <rowkey>, <family:column> , <timestamp>,必須指定列名
# 例如:刪除表t1,rowkey001中的f1:col1的數(shù)據(jù) > delete 't1','rowkey001','f1:col1' |
6) 刪除數(shù)據(jù)——?jiǎng)h除行
# 語(yǔ)法:deleteall <table>, <rowkey>, <family:column> , <timestamp>,可以不指定列名,刪除整行數(shù)據(jù)
# 例如:刪除表t1,rowk001的數(shù)據(jù) > deleteall 't1','rowkey001' |
7) 刪除數(shù)據(jù)——?jiǎng)h除表中的所有數(shù)據(jù)
# 語(yǔ)法: truncate <table> # 其具體過(guò)程是:disable table -> drop table -> create table
# 例如:刪除表t1的所有數(shù)據(jù) > truncate 't1' |
Region管理:
1) 移動(dòng)Region
# 語(yǔ)法:move 'encodeRegionName', 'ServerName' # encodeRegionName指的regioName后面的編碼,ServerName指的是master-status的Region Servers列表
# 示例 >move '4343995a58be8e5bbc739', 'db-41.xxx.xxx.org,60020,139' |
2) 開(kāi)啟/關(guān)閉region
# 語(yǔ)法:balance_switch true|false hbase(main)> balance_switch |
3) 手動(dòng)split
# 語(yǔ)法:split 'regionName', 'splitKey' |
4) 手動(dòng)觸發(fā)major compaction
#語(yǔ)法: #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' |
此時(shí)你已經(jīng)學(xué)會(huì)了安裝hadoop集群,了解了HDFS文件系統(tǒng),MapReduce計(jì)算框架和Zookeeper協(xié)作服務(wù)(Zookeeper數(shù)據(jù)模型、訪(fǎng)問(wèn)控制、應(yīng)用場(chǎng)景),今天學(xué)完了HBase,下一篇我們介紹hadoop的數(shù)據(jù)庫(kù)工具——Hive。
如何用4個(gè)月學(xué)會(huì)Hadoop開(kāi)發(fā)并找到年薪25萬(wàn)工作?
免費(fèi)分享一套17年最新Hadoop大數(shù)據(jù)教程和100道Hadoop大數(shù)據(jù)必會(huì)面試題。
因?yàn)殒溄咏?jīng)常被和諧,需要的朋友請(qǐng)加微信 ganshiyun666 來(lái)獲取最新下載鏈接,注明“51CTO”
教程已幫助300+人成功轉(zhuǎn)型Hadoop開(kāi)發(fā),90%起薪超過(guò)20K,工資比之前翻了一倍。
百度Hadoop核心架構(gòu)師親自錄制
內(nèi)容包括0基礎(chǔ)入門(mén)、Hadoop生態(tài)系統(tǒng)、真實(shí)商業(yè)項(xiàng)目實(shí)戰(zhàn)3大部分。其中商業(yè)案例可以讓你接觸真實(shí)的生產(chǎn)環(huán)境,訓(xùn)練自己的開(kāi)發(fā)能力。
網(wǎng)頁(yè)題目:(第6.2篇)大數(shù)據(jù)發(fā)展背后的強(qiáng)力推手——HBase分布式存儲(chǔ)系統(tǒng)
文章URL:http://jinyejixie.com/article38/ijjhpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、品牌網(wǎng)站建設(shè)、虛擬主機(jī)、建站公司、定制網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)