亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

HBase運(yùn)維基礎(chǔ)——元數(shù)據(jù)逆向修復(fù)原理

ctriptech / 1420人閱讀

摘要:本文就運(yùn)維的原理基礎(chǔ)開始入手,重點(diǎn)講解數(shù)據(jù)完整性,以及元數(shù)據(jù)逆向工程恢復(fù)數(shù)據(jù)完整性的原理方法。小結(jié)本文介紹了運(yùn)維基礎(chǔ)原理中的數(shù)據(jù)完整性以及逆向元數(shù)據(jù)修復(fù)原理,并舉例介紹兩個逆向修復(fù)元數(shù)據(jù)的工具和實(shí)用執(zhí)行步驟。

背景
鑒于上次一篇文章——“云HBase小組成功搶救某公司自建HBase集群,挽救30+T數(shù)據(jù)”的讀者反饋,對HBase的逆向工程比較感興趣,并咨詢?nèi)绾问褂孟鄳?yīng)工具進(jìn)行運(yùn)維等等??偟膩碚f,就是想更深層理解HBase運(yùn)維原理,提高運(yùn)維HBase生產(chǎn)環(huán)境的能力,應(yīng)對各種常見異?,F(xiàn)象。不同的讀者對hbase的了解程度不同,本文不打算著重編寫一個工具怎么使用,而是從HBase的運(yùn)維基礎(chǔ)知識介紹開始講解。為了能幫助大部分讀者提高HBase運(yùn)維能力,后續(xù)會寫個“HBase運(yùn)維系列” 專題系列文章。

介紹

相信很多自建HBase的企業(yè)會經(jīng)常碰到各種各樣的hbase運(yùn)維問題。比如使用HBase的時候,HBase寫入一段時間后開始RegionServer節(jié)點(diǎn)開始掛掉,重啟RegionServer發(fā)現(xiàn)啟動很慢,很多region出現(xiàn)RTI問題,導(dǎo)致讀寫某個region的業(yè)務(wù)hang住了 。還有一些人的HBase集群多次運(yùn)維嘗試后,直接HBase啟動不了了,meta表上線就開始報(bào)錯,導(dǎo)致最終業(yè)務(wù)不能正常上線運(yùn)行等等系列問題。本文就HBase運(yùn)維的原理基礎(chǔ)開始入手,重點(diǎn)講解數(shù)據(jù)完整性,以及元數(shù)據(jù)“逆向工程”恢復(fù)數(shù)據(jù)完整性的原理方法。開啟后續(xù)一系列的HBase運(yùn)維知識講解。

HBase目錄結(jié)構(gòu)
本文就1.x版本進(jìn)行講解,不同版本大致相通。HBase在HDFS上會多帶帶使用一個目錄為HBase文件目錄的根目錄,通常為 “/hbase”?;谶@個目錄下,會有以下目錄組織結(jié)構(gòu):

/hbase/archive (1)
/hbase/corrupt (2) 
/hbase/data/default/TestTable/.tabledesc/.tableinfo.0000000001 (3)
/hbase/data/default/TestTable/fc06f27a6c5bc2ff57ea38018b4dd399/info/2e58b3e274ba4d889408b05e526d4b7b (4)
/hbase/data/default/TestTable/fc06f27a6c5bc2ff57ea38018b4dd399/recovered.edits/340.seqid (5)
/hbase/data/default/TestTable/fc06f27a6c5bc2ff57ea38018b4dd399/.regioninfo (6)
/hbase/data/default/TestTable/fc06f27a6c5bc2ff57ea38018b4dd399/.tmp (7)
/hbase/data/default/TestTable/fc06f27a6c5bc2ff57ea38018b4dd399/.splits (8)
/hbase/data/default/TestTable/fc06f27a6c5bc2ff57ea38018b4dd399/.merges (9)
/hbase/data/hbase/acl (10)
/hbase/data/hbase/meta (11)
/hbase/hbase.id (12)
/hbase/hbase.version (13)
/hbase/MasterProcWALs (14)
/hbase/oldWALs (15)
/hbase/.tmp (16)
/hbase/.trashtables/data (17)
/hbase/WALs/tins-donot-rm-test-hb1-004.hbase.9b78df04-b.rds.aliyuncs.com,16020,1523502350378/tins-donot-rm-test-hb1-004.hbase.9b78df04-b.rds.aliyuncs.com%2C16020%2C1523502350378.default.1524538284034 (18)

(1) 進(jìn)行snapshot或者升級的時候使用到的歸檔目錄。compaction刪除hfile的時候,也會把就的hfile歸檔到這里等。

(2) splitlog的corrupt目錄,以及corrupt hfile的目錄。

(3) 表的基本屬性信息元文件tableinfo。

(4) 對應(yīng)表下的hfile數(shù)據(jù)文件。
(5) 當(dāng)splitlog發(fā)生時,一個RS的wal會按照region級別split WALs寫到對應(yīng)目錄下的的recovered.edits目錄上,使得此region再次被open的時候,回放這些recovered.edits 日志。

(6) regioninfo文件。

(7) compaction等的臨時tmp目錄。

(8) split時臨時目錄,如果上次region的split沒有完成被中斷了,這個region再open的時候會自動清理這個目錄,一般不需要人工干預(yù)。

(9) merges時的臨時目錄,和split一樣,如果沒有正常完成的時候被中斷了,那么他會在下次被open的時候自動清理。一般也不需要人工干預(yù)。

(10) acl 開啟HBase權(quán)限控制時的權(quán)限記錄系統(tǒng)表

(11) meta 元數(shù)據(jù)表,記錄region相關(guān)信息

(12) hbase.id 集群啟動初始化的時候,創(chuàng)建的集群唯一id。可以重新fix生成
(13) hbase.version hbase 軟件版本文件,代碼靜態(tài)版本,現(xiàn)在都是8
(14) master執(zhí)行過程程序的狀態(tài)保存,用于中斷恢復(fù)執(zhí)行使用。

(15) oldWALs 歷史wal,即wal記錄的數(shù)據(jù)已經(jīng)確認(rèn)持久化了,那么這些wal就會被移到這里。splitlog完成的那些就日志,也會被放到這里。

(16) tmp 臨時輔助目錄,比如寫一個hbase.id文件,在這里寫成功后,rename到 /hbase/hbase.id

(17) /hbase/.trashtables/data 當(dāng)truncate table或者delete table的時候,這些數(shù)據(jù)會臨時放在這里,默認(rèn)1小時內(nèi)被清

(18) 記錄著一臺RegionServer上的WAL日志文件??梢钥吹剿莚egionserver名字是有時間的,即下一次啟動時RS的wal目錄就會使用新的目錄結(jié)構(gòu)存放wal,這個舊的RS wal 目錄就會被splitlog過程拆分回放

HBase涉及的主要文件及用途

HDFS靜態(tài)文件,HDFS上的HBase 數(shù)據(jù)完整性

hfile文件:數(shù)據(jù)文件,目前最高版本也是默認(rèn)常用版本為 3。 hfile文件結(jié)構(gòu)細(xì)節(jié)可以參考官網(wǎng)http://hbase.apache.org/book....。我們這里逆向生成元數(shù)據(jù)主要使用到了HFile fileinfo的firstkey、lastkey信息。

hfilelink文件: 在hbase snapshot時用到, migration upgrade 也會使用到。很少碰到這類文件的運(yùn)維問題,這里不作過多介紹。

reference文件:用來指定half hfile,一個region有reference時,這個region不能split。split/merge會創(chuàng)建這個。進(jìn)行compaction后生成新的hfile后,會把這個reference刪除。hfile的reference文件名格式一般是 hfile.parentEncRegion。如:/hbase/data/default/table/region-one/family/hfilename。其region-two有reference hfile文件名格式為:/hbase/data/default/table/region-two/family/hfile.region-one 通常無效引用就是 region-one的hfile不存在了,那么這個引用就會失效。他的修復(fù)方法一般是把reference無效的引用移除。

".regioninfo" 文件,保存著 endkey/offline標(biāo)志/regionid/regionName/split標(biāo)志/startkey/tablename等

tableinfo文件這類文件保存著 tableName/table屬性信息/table級別config信息/family信息。其中family信息保存著 famliyName/famiy屬性/famliy級別config信息等。

通常,table屬性有:REGION_MEMSTORE_REPLICATION,PRIORITY,IS_ROOT_KEY等,一般這些屬性默認(rèn)也是根據(jù)配置的一樣。family屬性有:BLOCKSIZE,TTL,REPLICATION_SCOPE等,一般屬性是根據(jù)配置使用默認(rèn)的。

hbase:meta表數(shù)據(jù)內(nèi)容格式

regionname, info:regioninfo, regioninfo的encodeValue值

regionname, info:seqnumDuringOpen, 序列號

regionname, info:server, region所在的server名

regionname, info:serverstartcode, regionserver 啟動的timestamp

元數(shù)據(jù)逆向生成原理

上述介紹的數(shù)據(jù)文件中,HBase的主要的元數(shù)據(jù)主要由meta表、tableinfo、regioninfo構(gòu)成。這里的逆向生成元數(shù)據(jù)指的是,根據(jù)數(shù)據(jù)hfile數(shù)據(jù)文件,反向生成regioninfo/tableinfo/meta表的過程。

1. 逆向生成tableinfo文件

case1. 通過從master進(jìn)程內(nèi)存中的tabledescritor cache 完整恢復(fù)tableinfo文件,此時恢復(fù)的tableinfo是完整的,和之前的完全一樣。

case2. 當(dāng)cache中沒有加載過此表的tableinfo時,修復(fù)過程只能從表的目錄結(jié)構(gòu)list所有familyNames 來恢復(fù)tableinfo,這個時候只能得到的是列簇的名字,恢復(fù)tableinfo文件內(nèi)容中,除了表名、列簇名一致,其他的屬性均采用默認(rèn)值。這個時候如果運(yùn)維人員知道有什么屬性是自定義進(jìn)去的,那么就需要要手動再次添加進(jìn)去。

2. 逆向生成regioninfo文件

hfile 中的fileinfo讀取firstkey/lastkey 排好序,得到region下所有hfile的最大rowkey和最小rowkey,并根據(jù)tableinfo中的表名 完整恢復(fù) regioninfo文件。主要這里只能恢復(fù) 表明/startkey/endkey, 其他屬性如:offline標(biāo)志,regionName,split標(biāo)志,hashcode等均使用代碼生成或者配置的默認(rèn)值。

3. 逆向填充meta表行

regioninfo文件序列化,填入meta表 info:regioninfo 列,并同時寫入默認(rèn)的server,等它被再次open的時候,重新分配region到實(shí)際的regionserver上,并更新這里的數(shù)據(jù)行。

逆向工程除了上面的直接文件、數(shù)據(jù)內(nèi)容修復(fù)外,還涉及到數(shù)據(jù)的完整性其他方面修復(fù)。一個表示由無窮小的rowkey到無窮大的rowkey范圍組成,還可能會發(fā)生的問題如:region空洞、region重疊現(xiàn)象,如:

如果有region空洞的時候,就會使用他們的空洞邊界作為startkey/endkey,再修復(fù)創(chuàng)建一個region目錄及目錄下的regioninfo文件。如果是region重疊,則會把重疊的region進(jìn)行合并,取所有region的最大最小rowkey作為merge后新region的最大最小rowkey。

元數(shù)據(jù)工具修復(fù)

元數(shù)據(jù)的缺少或者完整性有問題,會影響系統(tǒng)運(yùn)行,甚至集群直接不可用。最常見的如 meta表上線失敗,region 上線open失敗等。這里介紹兩個工具,?工具一: hbase hbck 在線修復(fù)完整性修復(fù)元數(shù)據(jù)信息,?工具二:OfflineMetaRepair 離線重建 hbase:meta 元數(shù)據(jù)表。

在線hbck修復(fù):
?前提:HDFS fsck 確保 hbase跟目錄下文件沒有損壞丟失,如果有,則先進(jìn)行corrupt block 移除。

?步驟1. hbase hbck 檢查輸出所以ERROR信息,每個ERROR都會說明錯誤信息。

?步驟2. hbase hbck -fixTableOrphones 先修復(fù)tableinfo缺失問題,根據(jù)內(nèi)存cache或者h(yuǎn)dfs table 目錄結(jié)構(gòu),重新生成tableinfo文件。

?步驟3. hbase hbck -fixHdfsOrphones 修復(fù)regioninfo缺失問題,根據(jù)region目錄下的hfile重新生成regioninfo文件

?步驟4. hbase hbck -fixHdfsOverlaps 修復(fù)region重疊問題,merge重疊的region為一個region目錄,并從新生成一個regioninfo

?步驟5. hbase hbck -fixHdfsHoles 修復(fù)region缺失,利用缺失的rowkey范圍邊界,生成新的region目錄以及regioninfo填補(bǔ)這個空洞。

?步驟6. hbase hbck -fixMeta 修復(fù)meta表信息,利用regioninfo信息,重新生成對應(yīng)meta row填寫到meta表中,并為其填寫默認(rèn)的分配regionserver

?步驟7. hbase hbck -fixAssignment 把這些offline的region觸發(fā)上線,當(dāng)region開始重新open 上線的時候,會被重新分配到真實(shí)的RegionServer上 , 并更新meta表上對應(yīng)的行信息。

?

離線OfflineMetaRepair重建?:
前提:HDFS fsck 確保 hbase跟目錄下文件沒有損壞丟失,如果有,則先進(jìn)行corrupt block 移除

?步驟1: 執(zhí)行 hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair -fix

最后,兩個工具使用說明都比較詳細(xì),經(jīng)過上面的基礎(chǔ)介紹,相信都會看的懂的。這里不對工具再細(xì)致說明,工具的說明可以參考官網(wǎng)或者工具提示。?題外話,有些開源組件設(shè)計(jì)的時候,向hbase元數(shù)據(jù)文件寫入一些特有的信息,但是并沒有修改到hbase工具的修復(fù)工具,或者它自己沒有維護(hù)修復(fù)工具,如果這類文件損壞、丟失了,那么相應(yīng)的組件就會運(yùn)行不正常。使用這類組件的用戶,應(yīng)該不僅記錄好你的表的基本結(jié)構(gòu),還要記錄表的屬性配置等,當(dāng)發(fā)生修復(fù)運(yùn)維行為的時候,主要再次核對確認(rèn)。

?小結(jié)

本文介紹了運(yùn)維hbase基礎(chǔ)原理中的數(shù)據(jù)完整性以及逆向元數(shù)據(jù)修復(fù)原理,并舉例介紹兩個逆向修復(fù)元數(shù)據(jù)的工具和實(shí)用執(zhí)行步驟。后續(xù)會出系列文章,說明更多hbase運(yùn)維基礎(chǔ)、運(yùn)作原理等,希望對大家的運(yùn)維和使用HBase有所幫助。
詳情請閱讀原文

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/8053.html

相關(guān)文章

  • 「回顧」網(wǎng)易數(shù)據(jù)基礎(chǔ)平臺建設(shè)

    摘要:特點(diǎn)有聚合運(yùn)算相關(guān)算法,時序數(shù)據(jù)庫相對于關(guān)系型數(shù)據(jù)庫沒有特別復(fù)雜的查詢,最常見的使用類型是寬表使用,在此基礎(chǔ)上做一些聚合算法插值查詢。 首先簡單介紹一下網(wǎng)易杭州研究院情況簡介,如下圖所示: showImg(https://segmentfault.com/img/bVbni6K?w=720&h=285); 我們公司主要從事平臺技術(shù)開發(fā)和建設(shè)方面,工作的重點(diǎn)方向主要在解決用戶在數(shù)據(jù)治理中...

    sevi_stuo 評論0 收藏0
  • UCloud一站式智能大數(shù)據(jù)平臺USDP免費(fèi)版正式發(fā)布!

    摘要:企業(yè)微信截圖企業(yè)微信截圖兼容最廣的一站式智能大數(shù)據(jù)平臺涵蓋了等眾多開源大數(shù)據(jù)組件,支持對這些組件進(jìn)行運(yùn)維中臺建設(shè)數(shù)據(jù)開發(fā)業(yè)務(wù)可視化等全棧式大數(shù)據(jù)開發(fā)運(yùn)維管理。通過一站式智能大數(shù)據(jù)平臺支持的等分布式運(yùn)算框架,可以高效的進(jìn)行機(jī)器學(xué)習(xí)應(yīng)用開發(fā)。背景在大數(shù)據(jù)業(yè)務(wù)系統(tǒng)中,所有技術(shù)棧生態(tài)均是圍繞著存儲進(jìn)行擴(kuò)展的,目前開源的主流存儲技術(shù)棧主要包含如下 3 種類型:· HDFS:Hadoop 系列套件,包含...

    Tecode 評論0 收藏0
  • UCloud發(fā)布一站式智能大數(shù)據(jù)平臺USDP免費(fèi)版附USDP資源下載地址

    摘要:機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)通過算法對大量數(shù)據(jù)進(jìn)行分析,挖掘出其中蘊(yùn)含的規(guī)律,并用于事物預(yù)測或者分類,有大量的計(jì)算需求。通過一站式智能大數(shù)據(jù)平臺支持的等分布式運(yùn)算框架,可以高效的進(jìn)行機(jī)器學(xué)習(xí)應(yīng)用開發(fā)。在大數(shù)據(jù)業(yè)務(wù)系統(tǒng)中,所有技術(shù)棧生態(tài)均是圍繞著存儲進(jìn)行擴(kuò)展的,目前開源的主流存儲技術(shù)棧主要包含如下 3 種類型:· HDFS:Hadoop 系列套件,包含 Hive、Hbase、Phoenix 等;· Ela...

    Tecode 評論0 收藏0

發(fā)表評論

0條評論

ctriptech

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<