版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
HBase數(shù)據(jù)庫應用案例教程5HBase原理實現(xiàn)項目項目導讀HBase作為一種分布式數(shù)據(jù)庫,擁有強大的功能和出色的性能表現(xiàn),但如果對其的了解僅停留在表面,恐怕很難發(fā)揮出其最大的優(yōu)勢。因此,要想深入使用HBase,理解其原理是非常有必要的。HBase的原理涉及很多方面,包括數(shù)據(jù)的讀寫流程、WAL機制、Region拆分、StoreFile合并、RegionServer管理、數(shù)據(jù)導出等。深入理解這些原理,可以幫助人們更好地利用HBase存儲數(shù)據(jù),以滿足業(yè)務需求并確保數(shù)據(jù)的可用性和安全性。知識目標了解Region的定義和定位方式。了解RegionServer的組成及數(shù)據(jù)的讀寫流程。理解WAL機制的核心思想。理解Region的拆分方式和負載均衡原理。理解StoreFile的合并方式。掌握HBase運維管理和數(shù)據(jù)管理的方法。能力目標能夠使用合適的拆分方式對Region進行拆分。能夠根據(jù)實際情況添加或刪除RegionServer節(jié)點。能夠使用HBase的數(shù)據(jù)導出、數(shù)據(jù)導入、數(shù)據(jù)拷貝和快照恢復功能對數(shù)據(jù)進行管理。素質(zhì)目標提高靈活處理問題的能力,從而更好地適應不斷變化的環(huán)境。養(yǎng)成未雨綢繆的習慣,增強憂患意識。項目分析深入理解HBase的原理,并在使用時對其進行恰當?shù)墓芾砗途S護,能夠有效提高數(shù)據(jù)的訪問效率,以及集群的性能和安全性。本項目首先介紹HBase的工作原理、Region
管理、運維管理及數(shù)據(jù)管理方面的內(nèi)容,然后通過基于用戶行為數(shù)據(jù)表的預拆分和在HBase集群中添加RegionServer節(jié)點的操作,讓讀者對HBase的原理有更深刻的理解。項目導航HBase工作原理1HBaseRegion管理2HBase集群管理301HBase工作原理問題導入全班學生以3~5人為一組,各組選出組長。組長組織組員掃碼觀看“HBase數(shù)據(jù)管理”視頻,討論并回答下列問題。問題1:你遇到過數(shù)據(jù)丟失的情況嗎?你是如何應對的?問題2:在HBase中,數(shù)據(jù)管理包括哪些方式,它們各有哪些優(yōu)缺點?HBase數(shù)據(jù)管理5.1.1Region概述1.表和RegionRegion在RegionServer上的分布HBase通常由很多表組成,表中的行按照行鍵的字典順序進行排列。根據(jù)某種拆分方式對表進行拆分形成分區(qū)(Region),然后將這些分區(qū)分別存儲到不同節(jié)點上。在HBase中,Region是數(shù)據(jù)存儲和訪問的基本單元。Master負責將不同的Region分配到不同的RegionServer,但是同一個Region只能分配到同一個RegionServer,RegionServer將維護分配給自己的Region列表,如圖所示。5.1.1Region概述2.Region定位在HBase中,當客戶端需要插入、刪除或查詢數(shù)據(jù)時,首先需要確定數(shù)據(jù)對應Region所在的RegionServer地址,這一過程稱為Region定位。(1)“hbase:meta”表。“hbase:meta”表的每行包含兩部分,分別是Region標識符和RegionServer標識符,通過兩者之間的對應關(guān)系就可以知道每個Region具體分布在哪個RegionServer。5.1.1Region概述2.Region定位“hbase:meta”表中的“hbase”和“meta”分別表示什么?課堂討論5.1.1Region概述2.Region定位(1)“hbase:meta”表?!癶base:meta”表的結(jié)構(gòu)和普通表沒有區(qū)別,也是采用鍵值對(key/value)存儲模式。使用HBaseShell提供的scan命令可以查看“hbase:meta”表中的數(shù)據(jù),如圖所示。查看“hbase:meta”表中的數(shù)據(jù)5.1.1Region概述2.Region定位(1)“hbase:meta”表?!癶base:meta”表中的每行記錄了一個
Region
的信息。其中,行鍵的結(jié)構(gòu)如下。TableName,StartKey,Timestamp.EncodedName.TableName是表名;StartKey是Region中存儲數(shù)據(jù)的開始行鍵,第一個Region的開始行鍵為空;Timestamp是Region創(chuàng)建的時間戳;EncodedName是Region名稱的編碼字符串,它是由表名、開始行鍵和Region創(chuàng)建的時間戳進行字符串編碼后形成的。5.1.1Region概述2.Region定位(1)“hbase:meta”表?!癶base:meta”表中有兩個列族:列族table
中只包含一個列限定符
state,用于存儲表的狀態(tài);列族
info
中包含
6
個列限定符,分別為
regioninfo、seqnumDuringOpen、server、serverstartcode、sn和state。①regioninfo:Region的詳細信息。②seqnumDuringOpen:Region打開時的序列號。③server:Region所在的RegionServer地址。④serverstartcode:RegionServer的啟動時間。⑤sn:由server和serverstartcode組成。⑥state:Region的狀態(tài),包括可用、不可用等。5.1.1Region概述2.Region定位(2)二級尋址方式。了解“hbase:meta”表結(jié)構(gòu)后,下面介紹Region的定位。HBase2.4.14采用二級尋址方式來定位Region,如圖所示。Region二級尋址方式5.1.2RegionServer組成RegionServer是負責存儲和管理數(shù)據(jù)的節(jié)點,用于響應用戶的數(shù)據(jù)讀寫請求,其組成如圖所示。RegionServer組成5.1.2RegionServer組成1.HLog作用:數(shù)據(jù)持久化和數(shù)據(jù)恢復。原理:每個RegionServer默認只有一個HLog文件,它記錄了所有寫操作在內(nèi)存中的變化,并將這些變化以追加的方式先寫入HLog文件,再寫入MemStore緩存,并且直到MemStore緩存所對應的日志都寫入磁盤后,緩存的內(nèi)容才會寫入磁盤。定義:HLog是一種預寫式日志(write-ahead-log,WAL)。5.1.2RegionServer組成2.StoreStore:Store是RegionServer的核心,每個Region由多個Store(每個Store存儲一個列族的數(shù)據(jù))組成,每個Store又包含一個MemStore緩存和多個StoreFile文件。MemStore:MemStore是內(nèi)存中的緩存,保存著最近更新的數(shù)據(jù)。當MemStore緩存中的數(shù)據(jù)量達到某個閾值時,HBase會將其中的數(shù)據(jù)按照行鍵字典順序?qū)懭隨toreFile文件中。StoreFile:StoreFile文件是HBase中最小的存儲單元,是磁盤上的文件,寫入StoreFile文件中的數(shù)據(jù)將會進行持久化存儲。5.1.2RegionServer組成3.HFileStoreFile底層是以HDFS的HFile格式保存數(shù)據(jù)的,而HFile通常采用壓縮方式存儲數(shù)據(jù),其存儲格式如圖所示。HFile存儲格式記錄文件的元數(shù)據(jù)信息包含指向其他數(shù)據(jù)塊起始點的指針記錄Data塊的偏移量Meta(Optional)塊的偏移量(1)客戶端訪問Zookeeper,從“hbase:meta”表中獲取要寫入數(shù)據(jù)對應Region所在的RegionServer地址。(2)客戶端訪問對應的RegionServer并找到所需Region,該Region首先將數(shù)據(jù)寫入HLog文件,然后寫入MemStore緩存。(3)當StoreFile文件數(shù)量達到某個閾值時,會進行StoreFile文件的合并操作。5.1.3數(shù)據(jù)讀寫流程1.數(shù)據(jù)寫入流程5.1.3數(shù)據(jù)讀寫流程2.數(shù)據(jù)讀取流程(1)客戶端訪問Zookeeper,從“hbase:meta”表中獲取要讀取數(shù)據(jù)對應Region所在的RegionServer地址。(2)客戶端向?qū)猂egionServer發(fā)送數(shù)據(jù)讀取請求,RegionServer接收請求后首先會訪問MemStore緩存,如果數(shù)據(jù)在緩存中,則直接將數(shù)據(jù)返給客戶端;如果數(shù)據(jù)不在緩存中,則先到磁盤上的StoreFile文件中讀取數(shù)據(jù),然后將數(shù)據(jù)返給客戶端。5.1.4WAL機制HBase的WAL機制是一種高并發(fā)、持久化的日志保存與回放機制,主要用于持久化數(shù)據(jù)變更信息。WAL
機制的核心思想是先將數(shù)據(jù)持久化寫入
HLog
文件,再同步寫入磁盤,然后按照一定的規(guī)則進行組織和索引。這樣,當系統(tǒng)發(fā)生故障時,可以從
HLog
文件中恢復丟失的數(shù)據(jù)。5.1.4WAL機制1當用戶執(zhí)行數(shù)據(jù)寫入操作時,先將數(shù)據(jù)寫入
HLog
文件。2當HLog文件達到一定大小時,將數(shù)據(jù)寫入MemStore緩存。3當MemStore緩存中的數(shù)據(jù)量達到某個閾值時,將緩存中的數(shù)據(jù)刷新到磁盤。4當系統(tǒng)發(fā)生故障時,可以通過HLog文件恢復數(shù)據(jù)。WAL機制的工作流程5.1.4WAL機制使用HLog文件恢復數(shù)據(jù)的步驟1Master處理發(fā)生故障的RegionServer上的HLog文件。2系統(tǒng)根據(jù)
HLog
文件中每條日志記錄所屬的
Region,對其中的數(shù)據(jù)進行拆分,并分別放到相應的Region。3將失效的
Region
重新分配到正常工作的
RegionServer,并將該
Region
相關(guān)的HLog文件也發(fā)送到該RegionServer。4RegionServer
收到分配給自己的
Region
及相關(guān)的日志后,重新執(zhí)行這些日志記錄,然后將其寫入MemStore緩存中,最后將緩存中的數(shù)據(jù)刷新到磁盤上的StoreFile文件中,完成數(shù)據(jù)的恢復。課堂檢測什么是Region?Region在RegionServer上是如何分布的?什么是Region定位?如何采用二級尋址方式定位Region?RegionServer組成有哪些?數(shù)據(jù)流的寫入流程和讀取流程是怎樣的?簡述WAL機制的工作流程?課堂小結(jié)HBase工作原理Region概述表和RegionRegion定位RegionServer組成HLogStoreHFile數(shù)據(jù)讀寫流程數(shù)據(jù)寫入流程數(shù)據(jù)讀取流程WAL機制02HBaseRegion管理問題導入提問回顧上節(jié)課知識點:簡述HBase的工作原理。5.2.1Region拆分Region拆分在HBase
中,每個表最初只有一個Region,當Region中包含的行數(shù)量達到某個閾值時,該Region會按照行鍵的字典順序拆分為兩個Region,拆分得到的每個Region都有一個開始行鍵(第一個Region除外)和一個結(jié)束行鍵(最后一個Region除外),表示該Region負責存儲該范圍內(nèi)的數(shù)據(jù)。隨著數(shù)據(jù)的不斷增加,Region會繼續(xù)拆分,形成越來越多的Region,如圖所示。5.2.1Region拆分Region的拆分是基于行鍵的,在同一個region中會出現(xiàn)行鍵不同的數(shù)據(jù)嗎?在不同的region中會出現(xiàn)行鍵相同的數(shù)據(jù)嗎?課堂討論5.2.1Region拆分HBase的Region拆分方式有3種,如表所示。拆分方式描述自動拆分根據(jù)不同的拆分策略進行自動拆分預拆分在創(chuàng)建表時按照一定的規(guī)則進行預拆分手動拆分根據(jù)實際需求進行手動拆分HBase的Region拆分方式5.2.1Region拆分1.自動拆分(1)ConstantSizeRegionSplitPolicy。當Region的大小達到閾值時自動觸發(fā)拆分操作,并將一個Region拆分為大小相同的兩個Region。其中的閾值通常是在hbase.hregion.max.filesize(默認為
10
GB)的基礎(chǔ)上進行設(shè)置的。5.2.1Region拆分1.自動拆分ConstantSizeRegionSplitPolicy拆分策略對于不同大小的表有區(qū)別嗎?課堂討論5.2.1Region拆分1.自動拆分(2)IncreasingToUpperBoundRegionSplitPolicy。當Region的大小達到閾值hbase.hregion.max.filesize時自動觸發(fā)拆分操作,但是該閾值會在一定條件下進行調(diào)整,調(diào)整規(guī)則與Region所屬表在當前RegionServer上的Region數(shù)量有關(guān)。在IncreasingToUpperBoundRegionSplitPolicy策略中,觸發(fā)Region拆分的閾值的計算公式如下。S=Min(R2×hbase.hregion.memstore.flush.size,hbase.hregion.max.filesize)S
是
Region
拆分的閾值;Min()函數(shù)表示返回給定參數(shù)中的最小值;R
是表中當前的
Region
數(shù)量;hbase.hregion.memstore.flush.size是
Region
中
MemStore
緩存的最大容量,默認為128MB;hbase.hregion.max.filesize是Region的最大存儲空間,默認為10GB。5.2.1Region拆分1.自動拆分在IncreasingToUpperBoundRegionSplitPolicy策略中,Region具體拆分方式如下。第一次創(chuàng)建表后,表中只有一個Region:此時R=1,當S=1×128
MB=128
MB時會觸發(fā)第一次拆分操作;此時R=2,當S=4×128MB=512
MB時會觸發(fā)第二次拆分操作;此時R=3,當S=9×128MB=1152MB時會觸發(fā)第3次拆分操作;此時R=4,當S=16×128MB=2
048
MB時會觸發(fā)第4次拆分操作。依此類推,當R=9時,觸發(fā)條件S=81×128
MB=10368MB>10GB,所以,之后的拆分觸發(fā)條件固定為S=10GB。5.2.1Region拆分1.自動拆分在IncreasingToUpperBoundRegionSplitPolicy策略中,Region具體拆分方式是什么樣的?課堂討論5.2.1Region拆分1.自動拆分(3)SteppingSplitPolicy。當Region的大小達到閾值時自動觸發(fā)拆分操作,該閾值也與Region所屬表在當前RegionServer上的Region數(shù)量有關(guān)。拆分規(guī)則是如果Region數(shù)量為1:則當Region的大小為hbase.hregion.memstore.flush.size×2時觸發(fā)拆分操作;否則,當Region的大小為hbase.hregion.max.filesize時觸發(fā)拆分操作。5.2.1Region拆分2.預拆分(1)手動指定預分區(qū)例如,在創(chuàng)建test表時,要求預先將Region拆分為5個,可以使用以下語句實現(xiàn)。create'test','info',SPLITS=>['100','200','300','400']執(zhí)行上述語句后,會創(chuàng)建包含5個Region的test表,且第一個Region沒有開始行鍵,最后一個Region沒有結(jié)束行鍵。這5個Region對應的行鍵范圍如下。第1個Region:to100。第2個Region:100to200。第3個Region:200to300。第4個Region:300to400。第5個Region:400to。知識庫TableDescriptortableDescriptor=TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName)).setColumnFamilies(columnfamilyList).build();//創(chuàng)建預分區(qū)byte[][]splits={Bytes.toBytes("100"),Bytes.toBytes("200"),Bytes.toBytes("300"),Bytes.toBytes("400")};//調(diào)用API創(chuàng)建表admin.createTable(tableDescriptor,splits);手動指定預分區(qū)還可以通過HBaseJava客戶端API實現(xiàn),核心代碼如下。5.2.1Region拆分2.預拆分(2)使用算法指定預分區(qū)例如,在創(chuàng)建
test
表時,要求預先使用十六進制算法將Region拆分為5個,可以使用以下語句實現(xiàn)。create'test','info',{NUMREGIONS=>5,SPLITALGO=>'HexStringSplit'}其中,NUMREGIONS參數(shù)是Region的個數(shù);SPLITALGO參數(shù)是算法的名稱。5.2.1Region拆分3.手動拆分使用split命令可以在HBase運行過程中對Region進行手動拆分。例如,要在HBase運行過程中將student表從行鍵20235001開始拆分成兩個Region,可以使用以下語句實現(xiàn)。split'student','20235001'5.2.1Region拆分3.手動拆分在實際創(chuàng)建表的過程中應如何進行拆分?課堂討論5.2.2StoreFile合并由于
MemStore
緩存容量的限制,HBase
會定期將
MemStore
緩存中的數(shù)據(jù)刷新到StoreFile文件中,且每次刷新都會生成一個新的StoreFile文件。所以,每個Store通常包含多個StoreFile文件。為了提高數(shù)據(jù)的讀寫效率,同時清理標記為刪除的數(shù)據(jù),當
StoreFile
文件數(shù)量達到某個閾值時,系統(tǒng)就會執(zhí)行合并操作,即將多個
StoreFile
文件合并為一個相對較大的
StoreFile文件。5.2.2StoreFile合并StoreFile文件的合并方式有兩種,一種是MinorCompact,另一種是MajorCompact,如圖所示。MinorCompactMajorCompact5.2.2StoreFile合并MinorCompact是將多個相鄰的StoreFile小文件合并為一個大文件。MinorCompact會在合并過程中阻止所有更新操作,直到合并完成或達到設(shè)定的超時時間,以確保系統(tǒng)的穩(wěn)定性。在進行MinorCompact時,系統(tǒng)會按照創(chuàng)建時間由早到晚對StoreFile文件進行排序,并將滿足條件(見下表)的StoreFile文件加入候選合并列表進行合并操作。1.MinorCompact參數(shù)合并條件paction.min每次參與合并的StoreFile文件數(shù)量大于或等于該值paction.max每次參與合并的StoreFile文件數(shù)量小于或等于該值paction.min.size每次參與合并的StoreFile文件大小均大于該值paction.max.size每次參與合并的StoreFile文件大小均小于該值paction.ratio每次參與合并的StoreFile文件大小均大于paction.
min.size值且均小于比其更早的所有StoreFile文件的大小總和乘以該值5.2.2StoreFile合并1.MinorCompactpaction.ratio
參數(shù)的應如何取值?是否值越大越好?課堂討論5.2.2StoreFile合并1.MinorCompact【實例5-1】現(xiàn)有
5
個StoreFile文件(分別由A、B、C、D、E表示),其大小分別為15、20、30、10、100(單位為字節(jié)),且按照創(chuàng)建時間由早到晚排序后依次為E、C、B、A、D。假設(shè)各參數(shù)的值如下,判斷采用MinorCompact方式時,哪些StoreFile文件會被合并。paction.ratio=1.2paction.min=3(個)paction.max=6(個)paction.min.size=9(字節(jié))paction.max.size=100(字節(jié))5.2.2StoreFile合并1.MinorCompact由于所有StoreFile文件的大小均大于paction.min.size參數(shù)的值(9字節(jié)),且除文件E外(文件大小為100字節(jié)),所有StoreFile文件的大小均小于paction.max.size參數(shù)的值(100字節(jié)),因此首先排除文件E。下面分別判斷文件C、B、A、D的大小是否小于比其更早的所有StoreFile文件的大小總和乘以paction.ratio的值(1.2),如果小于,則滿足表5-2中最后一個合并條件。思路分析(1)C:比文件C更早的StoreFile文件為B、A、D,故(20+15+10)×1.2=54,此時30<54,滿足條件。(2)B:比文件B更早的StoreFile文件為A、D,故(15+10)×1.2=30,此時20<30,滿足條件。5.2.2StoreFile合并1.MinorCompact(3)A:比文件A更早的StoreFile文件為D,故10×1.2=12,此時15>12,不滿足條件。(4)D:滿足條件。根據(jù)以上計算結(jié)果可知,此時滿足條件的StoreFile文件有C、B、D,同時StoreFile文件數(shù)量(3)滿足大于或等于paction.min的值(3)且小于或等于hbase.hstore.
compaction.max的值(6),因此可對StoreFile文件B、C、D進行合并操作。5.2.2StoreFile合并2.MajorCompactMajorCompact是將所有StoreFile文件合并為一個更大的StoreFile文件。MajorCompact較MinorCompact開銷更大且持續(xù)時間更長,整個過程會消耗大量系統(tǒng)資源。雖然合并后的StoreFile文件數(shù)量更少,但是可能會影響系統(tǒng)的性能。默認情況下,HBase每7天自動執(zhí)行一次MajorCompact,但是在實際應用中,通常會關(guān)閉自動觸發(fā)MajorCompact功能(將hbase.hregion.majorcompaction參數(shù)的值設(shè)置為0即可),改為在系統(tǒng)負載較小時手動觸發(fā)。但如果系統(tǒng)負載較小,也可開啟自動觸發(fā)MajorCompact功能。5.2.2StoreFile合并2.MajorCompactMinorCompact和MajorCompact在執(zhí)行StoreFile文件合并時有什么不同?課堂討論5.2.3Region負載均衡負載均衡是將負載平衡分配在多個服務器上,以減輕單一服務器壓力的計算機技術(shù)。使用負載均衡技術(shù)可以有效改善系統(tǒng)整體性能,提高系統(tǒng)的可用性和擴展性。5.2.3Region負載均衡1.負載均衡執(zhí)行條件開啟負載均衡功能。0102所有的RegionServer狀態(tài)正常。03當前沒有Region處于拆分狀態(tài)。5.2.3Region負載均衡2.負載均衡策略(1)RandomRegionPicker:隨機交換策略。該策略會隨機選出兩個RegionServer上的Region進行交換。(2)LoadPicker:Region數(shù)目均衡策略。該策略會獲取Region數(shù)目最多和最少的兩個RegionServer進行Region交換,這樣就可以使兩個RegionServer上最終的Region數(shù)目更加均衡。(3)LocalityBasedPicker:本地性最強策略。該策略會根據(jù)Region的本地性信息選擇合適的Region進行交換。課堂檢測Region拆分方式有哪些?StoreFile的合并方式有哪些?都有什么不同?Region負載均衡執(zhí)行條件有哪些?常用的Region負載均衡策略有哪些?課堂小結(jié)HBaseRegion管理Region拆分自動拆分預拆分手動拆分StoreFile合并MinorCompactMajorCompactRegion負載均衡負載均衡執(zhí)行條件負載均衡策略03HBase集群管理問題導入提問回顧上節(jié)課知識點:(1)Region拆分的原理是什么?(2)MinorCompact和MajorCompact的工作機制是什么?(3)Region負載均衡的執(zhí)行策略有哪些?5.3.1運維管理1.添加RegionServer節(jié)點為了適應
HBase
業(yè)務需求的不斷增長,可以通過添加
RegionServer
節(jié)點來增加HBase集群的彈性,進而提高系統(tǒng)的可靠性。(1)將集群中的從節(jié)點克隆一份,并將克隆后的節(jié)點作為要添加的節(jié)點。(2)修改節(jié)點主機名。(3)設(shè)置IP地址與主機名的映射關(guān)系。(4)配置SSH免密登錄。(5)配置Zookeeper。(6)修改“regionservers”文件,并將新添加節(jié)點的主機名另起一行添加進去。(7)啟動新節(jié)點完成節(jié)點的添加。5.3.1運維管理1.添加RegionServer節(jié)點啟動新添加的RegionServer節(jié)點的方式(1)在集群的Master節(jié)點上執(zhí)行以下命令。//啟動HBase[root@localhost~]#start-hbase.sh該命令在執(zhí)行過程中會檢查“regionservers”文件,并跳過已經(jīng)成功啟動的節(jié)點,啟動未啟動的節(jié)點。(2)在新添加的RegionServer節(jié)點上執(zhí)行以下命令。//啟動RegionServer服務[root@localhost~]#hbase-daemon.shstartregionserver執(zhí)行上述命令后,該節(jié)點的RegionServer服務就會啟動。5.3.1運維管理1.添加RegionServer節(jié)點在添加新的RegionServer節(jié)點后,是否需要重新分配Region?課堂討論5.3.1運維管理2.刪除RegionServer節(jié)點刪除RegionServer節(jié)點的方式(1)在要刪除的RegionServer節(jié)點上執(zhí)行以下命令。//停止RegionServer服務[root@localhost~]#hbase-daemon.shstopregionserver刪除RegionServer節(jié)點時,RegionServer會先將所有Region關(guān)閉,然后停止自己運行的進程。當Master檢測到RegionServer運行的進程停止后,會將該RegionServer的Region重新分配到其他正常運行的RegionServer節(jié)點。5.3.1運維管理2.刪除RegionServer節(jié)點刪除RegionServer節(jié)點的方式(2)在集群的Master節(jié)點上執(zhí)行以下命令。//停止RegionServer服務[root@localhost~]#graceful_stop.shMaster節(jié)點主機名刪除RegionServer節(jié)點時,Master會首先移除該
RegionServer
的Region,并將其分配到其他正常運行的
RegionServer
節(jié)點,然后刪除該
RegionServer
節(jié)點的相關(guān)配置和資源。這樣做可以確保在刪除
RegionServer
節(jié)點的過程中,數(shù)據(jù)不會丟失,整個過程會更加安全可靠。5.3.1運維管理3.添加Master備份節(jié)點為了增加HBase集群的可用性,可以為HBase集群添加Master備份節(jié)點。當Master節(jié)點出現(xiàn)故障時,Master備份節(jié)點自動接管整個HBase集群。要想添加Master備份節(jié)點,可在HBase安裝目錄的“conf”目錄中創(chuàng)建“backup-masters”文件(該文件的格式與“regionservers”文件的格式類似),并在其中添加Master備份節(jié)點的主機名或IP地址,然后將該文件復制到集群中的其他節(jié)點,最后執(zhí)行以下命令啟動Master備份節(jié)點。//啟動Master備份節(jié)點[root@localhost~]#hbase-daemon.shstartmaster5.3.2數(shù)據(jù)管理HBase提供了多種數(shù)據(jù)管理方式,包括數(shù)據(jù)導出、數(shù)據(jù)導入、數(shù)據(jù)拷貝和快照恢復等,它們各有優(yōu)缺點(見下表
),在實際生產(chǎn)環(huán)境中,用戶可根據(jù)需求選擇合適的數(shù)據(jù)管理方式。方式性能影響停機增量備份恢復時長數(shù)據(jù)導出/導入大不需要支持較長數(shù)據(jù)拷貝大不需要支持較長快照恢復很小短暫(恢復時)不支持很短HBase常用的數(shù)據(jù)管理方式對比5.3.2數(shù)據(jù)管理什么是增量備份?它的優(yōu)點是什么?課堂討論5.3.2數(shù)據(jù)管理1.數(shù)據(jù)導出使用hbaseorg.apache.hadoop.hbase.mapreduce.Export命令可將HBase表中的數(shù)據(jù)導出為HDFS序列化文件,其命令格式如下。hbaseorg.apache.hadoop.hbase.mapreduce.Export表名文件導出路徑應用場景(1)數(shù)據(jù)備份(2)數(shù)據(jù)遷移(3)數(shù)據(jù)分析5.3.2數(shù)據(jù)管理1.數(shù)據(jù)導出【實例5-2】將employee表導出到HDFS的“/hbase/employee_bak”目錄,然后將導出的文件下載到本地“/usr/local/employee_bak”目錄。步驟1將employee表導出到HDFS的“/hbase/employee_bak”目錄,命令如下。[root@localhost~]#hbaseorg.apache.hadoop.hbase.mapreduce.Exportemployee/hbase/employee_bak命令執(zhí)行結(jié)果如下圖所示。5.3.2數(shù)據(jù)管理1.數(shù)據(jù)導出步驟2使用hdfsdfs命令查看文件是否導出成功,如下圖所示。5.3.2數(shù)據(jù)管理1.數(shù)據(jù)導出hdfsdfs命令的使用方法是什么?課堂討論5.3.2數(shù)據(jù)管理1.數(shù)據(jù)導出步驟3將導出的文件下載到本地“/usr/local/employee_bak”目錄,命令如下。[root@localhost~]#hdfsdfs-get/hbase/employee_bak/usr/local/employee_bak步驟4
使用ls-l命令查看文件是否下載成功,命令如下。//切換到“/usr/local”目錄[root@localhost~]#cd/usr/local//“l(fā)s-l”命令用于顯示文件的屬性、大小等詳細信息[root@localhostlocal]#ls-l//如果生成“employee_bak”文件,表示文件下載成功drwxr-xr-x.2rootroot42Nov2211:01employee_bak5.3.2數(shù)據(jù)管理2.數(shù)據(jù)導入使用hbaseorg.apache.hadoop.hbase.mapreduce.Import命令可將使用hbaseorg.apache.
hadoop.hbase.mapreduce.Export命令導出的數(shù)據(jù)重新導入HBase表中,其命令格式如下。hbaseorg.apache.hadoop.hbase.mapreduce.Import表名文件導入路徑【實例5-3】將本地文件“/usr/local/employee_bak”上傳到HDFS的“/hbase/employee_
test_bak”目錄,然后將文件中的數(shù)據(jù)導入employee_test表。步驟1將本地文件“/usr/local/employee_bak”上傳到HDFS的“/hbase/employee_test_
bak”目錄,命令如下。[root@localhost~]#hdfsdfs-put/usr/local/employee_bak/hbase/employee_test_bak5.3.2數(shù)據(jù)管理2.數(shù)據(jù)導入步驟2使用hdfsdfs命令查看文件是否上傳成功,如下圖所示。使用hdfsdfs命令查看文件是否上傳成功5.3.2數(shù)據(jù)管理2.數(shù)據(jù)導入步驟3在HBaseShell環(huán)境中創(chuàng)建與employee表結(jié)構(gòu)相同的employee_test表,如下圖所示。創(chuàng)建employee_test表5.3.2數(shù)據(jù)管理2.數(shù)據(jù)導入步驟4退出
HBaseShell
環(huán)境,將“/hbase/employee_test_bak”文件中的數(shù)據(jù)導入employee_test表,命令如下。[root@localhost~]#hbaseorg.apache.hadoop.hbase.mapreduce.Importemployee_test/hbase/employee_test_bak命令執(zhí)行結(jié)果如下圖所示。數(shù)據(jù)導入執(zhí)行結(jié)果(部分)5.3.2數(shù)據(jù)管理2.數(shù)據(jù)導入步驟5使用HBaseShell提供的scan命令查看數(shù)據(jù)是否導入成功,如下圖所示。查看數(shù)據(jù)是否導入成功5.3.2數(shù)據(jù)管理2.數(shù)據(jù)導入導出或?qū)霐?shù)據(jù)命令中的路徑,是相對路徑還是絕對路徑?導入數(shù)據(jù)前,為什么要先創(chuàng)建與數(shù)據(jù)所在表結(jié)構(gòu)相同的表?課堂討論5.3.2數(shù)據(jù)管理3.數(shù)據(jù)拷貝使用hbaseorg.apache.hadoop.hbase.mapreduce.CopyTable命令可將HBase表中數(shù)據(jù)拷貝到同一個集群的不同表中,也可以拷貝到不同集群的相同表中,其命令格式如下。//在同一個集群中拷貝數(shù)據(jù)hbaseorg.apache.hadoop.hbase.mapreduce.CopyTable[--starttime=起始時間][--endtime=結(jié)束時間][--families=指定列族]--=新表名原始表名//在不同集群間拷貝數(shù)據(jù)hbaseorg.apache.hadoop.hbase.mapreduce.CopyTable[--starttime=起始時間][--endtime=結(jié)束時間][--families=指定列族][--peer.adr=目標集群地址]原始表名5.3.2數(shù)據(jù)管理3.數(shù)據(jù)拷貝【實例5-4】將employee表中的列族basic和other拷貝到同一個集群的employeeA表中。步驟1在HBaseShell環(huán)境中創(chuàng)建與employee表結(jié)構(gòu)相同的employeeA表,如下圖所示。創(chuàng)建employeeA表步驟2退出HBaseShell環(huán)境,將employee表拷貝到同一個集群的employeeA表中,命令如下。[root@localhost~]#hbaseorg.apache.hadoop.hbase.mapreduce.CopyTable--families=basic,other--=employeeAemployee5.3.2數(shù)據(jù)管理3.數(shù)據(jù)拷貝步驟3
使用HBaseShell提供的scan命令查看數(shù)據(jù)是否拷貝成功,如下圖所示。查看數(shù)據(jù)是否拷貝成功5.3.2數(shù)據(jù)管理3.數(shù)據(jù)拷貝導入數(shù)據(jù)和拷貝數(shù)據(jù)有什么區(qū)別?課堂討論5.3.2數(shù)據(jù)管理4.快照恢復快照是系統(tǒng)在某一時刻的數(shù)據(jù)的完整鏡像。利用
HBase
的快照功能可以創(chuàng)建表的全局一致性快照,且在創(chuàng)建快照后對該表中的數(shù)據(jù)進行增刪改查操作不會影響快照。利用創(chuàng)建的快照還可以快速恢復表??煺展芾矸绞紿BaseShell管理快照Java客戶端API管理快照5.3.2數(shù)據(jù)管理4.快照恢復HBa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衡陽市衡陽縣衛(wèi)健系統(tǒng)招聘專業(yè)技術(shù)人員考試真題2025
- 2025年山西職業(yè)技術(shù)學院輔導員考試真題
- 學徒學紋身協(xié)議書
- 《古文觀止》里的10篇經(jīng)典短文
- 黑龍江大慶市2026屆高三年級第二次教學質(zhì)量檢測數(shù)學(含答案)
- 鋼結(jié)構(gòu)制作與安裝技術(shù)規(guī)范
- 藥品供應鏈管理操作手冊
- 建筑材料質(zhì)量檢測流程詳細方案
- 購房合同法務風險及注意事項一覽
- 項目投標報價策略及合同管理
- 小學生心理健康咨詢個案輔導記錄
- YYT 0771.2-2009 動物源醫(yī)療器械 第2部分 來源、收集與處置的控制
- (高清版)TDT 1071-2022 園地分等定級規(guī)程
- 江陵亞東建材水泥有限公司 年產(chǎn)150萬噸水泥研磨及年產(chǎn)50萬噸礦渣粉-復合摻合料生產(chǎn)線項目環(huán)評報告
- 水性漆化學安全技術(shù)書(MSDS)
- 《中國近現(xiàn)代史綱要(2023版)》課后習題答案合集匯編
- 酒吧服務員手冊
- 教育部研究生、本科、高職學科分類及專業(yè)目錄
- 國開2023春計算機組網(wǎng)技術(shù)形考任務一參考答案
- 醫(yī)療器械公司任職文件
- 南昌工程學院施工組織設(shè)計
評論
0/150
提交評論