自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HBase運維基礎——元數據逆向修復原理

大數據
本文不打算著重編寫一個工具怎么使用,而是從HBase的運維基礎知識介紹開始講解。為了能幫助大部分讀者提高HBase運維能力,后續(xù)會寫個“HBase運維系列” 專題系列文章,歡迎持續(xù)交流。

背景

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

HBase運維基礎——元數據逆向修復原理

介紹

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

HBase目錄結構

本文就1.x版本進行講解,不同版本大致相通。HBase在HDFS上會單獨使用一個目錄為HBase文件目錄的根目錄,通常為 “/hbase”?;谶@個目錄下,會有以下目錄組織結構:

 

HBase運維基礎——元數據逆向修復原理

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

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

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

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

(6) regioninfo文件。

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

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

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

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

(11) meta 元數據表,記錄region相關信息

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

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

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

(17) /hbase/.trashtables/data 當truncate table或者delete table的時候,這些數據會臨時放在這里,默認1小時內被清

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

HBase涉及的主要文件及用途

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

1. hfile文件:數據文件,目前最高版本也是默認常用版本為 3。 hfile文件結構細節(jié)可以參考官網http://hbase.apache.org/book.html#_hfile_format_2。我們這里逆向生成元數據主要使用到了HFile fileinfo的firstkey、lastkey信息。

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

3. reference文件:用來指定half hfile,一個region有reference時,這個region不能split。split/merge會創(chuàng)建這個。進行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不存在了,那么這個引用就會失效。他的修復方法一般是把reference無效的引用移除。

4. ".regioninfo" 文件,保存著 endkey/offline標志/regionid/regionName/split標志/startkey/tablename等

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

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

6. hbase:meta表數據內容格式

  • regionname, info:regioninfo, regioninfo的encodeValue值
  • regionname, info:seqnumDuringOpen, 序列號
  • regionname, info:server, region所在的server名
  • regionname, info:serverstartcode, regionserver 啟動的timestamp

元數據逆向生成原理

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

1. 逆向生成tableinfo文件

case1. 通過從master進程內存中的tabledescritor cache 完整恢復tableinfo文件,此時恢復的tableinfo是完整的,和之前的完全一樣。

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

2. 逆向生成regioninfo文件

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

3. 逆向填充meta表行

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

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

 

HBase運維基礎——元數據逆向修復原理

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

元數據工具修復

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

在線hbck修復:

前提:HDFS fsck 確保 hbase跟目錄下文件沒有損壞丟失,如果有,則先進行corrupt block 移除。

  • 步驟1. hbase hbck 檢查輸出所以ERROR信息,每個ERROR都會說明錯誤信息。
  • 步驟2. hbase hbck -fixTableOrphones 先修復tableinfo缺失問題,根據內存cache或者hdfs table 目錄結構,重新生成tableinfo文件。
  • 步驟3. hbase hbck -fixHdfsOrphones 修復regioninfo缺失問題,根據region目錄下的hfile重新生成regioninfo文件
  • 步驟4. hbase hbck -fixHdfsOverlaps 修復region重疊問題,merge重疊的region為一個region目錄,并從新生成一個regioninfo
  • 步驟5. hbase hbck -fixHdfsHoles 修復region缺失,利用缺失的rowkey范圍邊界,生成新的region目錄以及regioninfo填補這個空洞。
  • 步驟6. hbase hbck -fixMeta 修復meta表信息,利用regioninfo信息,重新生成對應meta row填寫到meta表中,并為其填寫默認的分配regionserver
  • 步驟7. hbase hbck -fixAssignment 把這些offline的region觸發(fā)上線,當region開始重新open 上線的時候,會被重新分配到真實的RegionServer上 , 并更新meta表上對應的行信息。

離線OfflineMetaRepair重建:

前提:HDFS fsck 確保 hbase跟目錄下文件沒有損壞丟失,如果有,則先進行corrupt block 移除

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

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

小結

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

責任編輯:未麗燕 來源: 云棲社區(qū)
相關推薦

2024-05-10 08:00:00

HBase數據庫

2017-01-17 10:25:06

HBase集群運維

2014-07-25 17:06:44

HbaseWOT2014

2017-11-23 11:12:57

數據中心運維基礎

2015-10-30 10:40:45

意義數據運維運維

2013-05-06 15:10:18

IT運維管理大數據

2015-07-13 10:06:11

超融合基礎架構運維數據中心

2016-12-13 13:15:49

運維

2019-03-19 08:41:38

Linux運維變更

2016-12-27 09:08:34

HBase數據流程

2010-01-21 22:19:25

網絡優(yōu)化運維管理摩卡軟件

2024-12-23 15:42:50

2009-12-31 16:20:52

數據中心之變 運維

2021-09-10 15:16:19

Kubernetes核心組件運維

2018-12-14 11:04:56

數據庫運維智能

2015-03-25 12:53:11

mdc

2019-09-23 13:03:42

NameNode元數據文件

2019-03-15 10:13:10

運維云計算運營

2009-05-19 10:19:49

網絡拓撲運維管理摩卡
點贊
收藏

51CTO技術棧公眾號