為方便大家對故障處理有一個更好的理解,本文前半章簡單扼要的介紹一下Hbase的相關信息,后半章是筆者工作中遇到的故障處理分享。
HBase是一個開源的非關系型分布式數據庫,它參考了谷歌的BigTable建模,實現的編程語言為Java。它是Apache軟件基金會的Hadoop項目的一部分,運行于HDFS文件系統之上,為Hadoop提供類似于BigTable規模的服務。因此,它可以容錯地存儲海量稀疏的數據。
HBase是一個高可靠、高性能、面向列、可伸縮的分布式數據庫,是谷歌BigTable的開源實現,主要用來存儲非結構化和半結構化的松散數據。HBase的目標是處理非常龐大的表,可以通過水平擴展的方式,利用廉價計算機集群處理由超過10億行數據和數百萬列元素組成的數據表。
Hadoop可以很好地解決大規模數據的離線批量處理問題,但是受限于HadoopMapReduce編程框架的高延遲數據處理機制,使得Hadoop無法滿足大規模數據實時處理應用的需求。
HDFS面向批量訪問模式,不是隨機訪問模式。
傳統的通用關系型數據庫無法應對在數據規模劇增時導致的系統擴展性和性能問題(分庫分表也不能很好解決)。
傳統關系數據庫在數據結構變化時一般需要停機維護;空列浪費存儲空間。
1、數據類型:關系數據庫采用關系模型,具有豐富的數據類型和存儲方式,HBase則采用了更加簡單的數據模型,它把數據存儲為未經解釋的字符串。
2、數據操作:關系數據庫中包含了豐富的操作,其中會涉及復雜的多表連接。HBase操作則不存在復雜的表與表之間的關系,只有簡單的插入、查詢、刪除、清空等,因為HBase在設計上就避免了復雜的表和表之間的關系。
3、存儲模式:關系數據庫是基于行模式存儲的。HBase是基于列存儲的,每個列族都由幾個文件保存,不同列族的文件是分離的。
4、數據索引:關系數據庫通常可以針對不同列構建復雜的多個索引,以提高數據訪問性能。HBase只有一個索引——行鍵,通過巧妙的設計,HBase中的所有訪問方法,或者通過行鍵訪問,或者通過行鍵掃描,從而使得整個系統不會慢下來。
5、數據維護:在關系數據庫中,更新操作會用最新的當前值去替換記錄中原來的舊值,舊值被覆蓋后就不會存在。而在HBase中執行更新操作時,并不會刪除數據舊的版本,而是生成一個新的版本,舊有的版本仍然保留。
6、可伸縮性:關系數據庫很難實現橫向擴展,縱向擴展的空間也比較有限。相反,HBase和BigTable這些分布式數據庫就是為了實現靈活的水平擴展而開發的,能夠輕易地通過在集群中增加或者減少硬件數量來實現性能的伸縮。
1、庫函數:鏈接到每個客戶端
2、一個Master主服務器
3、許多個Region服務器
主服務器Master負責管理和維護Hbase表的分區信息,維護Region服務器列表,分配Region,負載均衡。
Region服務器負責存儲和維護分配給自己的Region,處理來自客戶端的讀寫請求。
客戶端并不是直接從Master主服務器上讀取數據,而是在獲得Region的存儲位置信息后,直接從Region服務器上讀取數據。
客戶端并不依賴Master,而是通過Zookeeper來Region位置信息,大多數客戶端甚至從來不和Master通信,這種設計方式使得Master負載很小。
上面介紹了Hbase的相關信息,下面就筆者工作中遇到的一個關于region故障進行分享。業務側報障大數據平臺,發現業務系統請求量明顯偏低,查看監控發現Hbase的請求量很低,甚至為0,產生告警,下面開始診斷過程:
Hbase 組件版本: Hbase:1.2.1 |
通過查看Hbase監控頁面,發現18號節點不在服務中,遠程連接比較卡頓,通過終端查看HRegionServer進程在,查看系統日志:
綜上判斷可能是因為網絡通信原因導致18號節點異常。
Hbase日志:顯示18號,region已下線
綜上,可判斷由于18號節點連接異常,導致當前節點Hbase異常,另外Hbase出現RIT,會影響Hbase的寫入。
嘗試重啟,但請求量仍然很低,后來將18號的Regionserver下線,效果不理想,最后決定做Hbase在線修復(18號已下線),Hbase狀態:
1. hbase hbck 檢查輸出所以ERROR信息,每個ERROR都會說明錯誤信息。
2. hbase hbck -fixTableOrphans 先修復tableinfo缺失問題,根據內存cache或者hdfs table 目錄結構,重新生成tableinfo文件。
3. hbase hbck -fixHdfsOrphans 修復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 -fixAssignments 把這些offline的region觸發上線,當region開始重新open 上線的時候,會被重新分配到真實RegionServer上 , 并更新meta表上對應的行信息。另外,當執行完所有修復步驟后仍然有:ERROR: Empty REGIONINFO_QUALIFIER found in hbase:meta。執行:hbase hbck -fixEmptyMetaCells。
修復近三個小時,修復完成后,重啟了Hbase,RIT異常解決了,再次檢查出現了新的問題:
1、元數據缺失
再利用之前的修復命令無法修復。
針對1:
通過執行hbasehbck-fixEmptyMetaCells
修復ERROR:EmptyREGIONINFO_QUALIFIER found in hbase:meta
針對2:
deletehbase:meta,DBN_YTO,601889669485241086,1536145292692.f47aaa41740bf9d99b1cc19b3de29d9b.,info:regioninfo
deletehbase:meta,DBN_YTO,601889669485241086,1546409804387.7795e5726f6f9e018cfa2fe93b20556d.,info:regioninfo
hdfsdfs -rm-r/hbase/data/default/DBN_YTO/f47aaa41740bf9d99b1cc19b3de29d9b
hdfsdfs -rm-r/hbase/data/default/DBN_YTO/7795e5726f6f9e018cfa2fe93b20556d
最后執行:
hbasehbck -fixAssignments-fixMeta -fixHdfsHoles
Hbase狀態為正常,到此Hbase修復完畢。
Hbase在線修復之前首先保證停掉相關業務,并且確保所有region都在線,否則修復可能會產生重復region,另外確保hbase根目錄下文件沒有損壞丟失,如果有,先移除掉,再修復。
hdfsfsck -delete
本次分享結束,后續我將繼續帶來關于Hbase日常運維的總結分享,我們下次再見。
文中相關參考資料來源:
鏈接:https://www.jianshu.com/p/53864dc3f7b4 作者:Michaelhbjian來源:簡書
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/130218.html
摘要:如果頻繁遇到這個問題可能是的參數或者其他方面設置的不合理,需要調整一下。 HBase本篇目錄HBase某一個表數據無法寫入,也無法讀取,從WebUI界面查看到有多個Region狀態為region in transaction是因為?讀取、寫入數據時,為什么找不到region?HBase某一個表數據無法寫入,也無法讀取,從WebUI界面查看到有多個Region狀態為region in tran...
摘要:特點有聚合運算相關算法,時序數據庫相對于關系型數據庫沒有特別復雜的查詢,最常見的使用類型是寬表使用,在此基礎上做一些聚合算法插值查詢。 首先簡單介紹一下網易杭州研究院情況簡介,如下圖所示: showImg(https://segmentfault.com/img/bVbni6K?w=720&h=285); 我們公司主要從事平臺技術開發和建設方面,工作的重點方向主要在解決用戶在數據治理中...
摘要:本文就運維的原理基礎開始入手,重點講解數據完整性,以及元數據逆向工程恢復數據完整性的原理方法。小結本文介紹了運維基礎原理中的數據完整性以及逆向元數據修復原理,并舉例介紹兩個逆向修復元數據的工具和實用執行步驟。 背景鑒于上次一篇文章——云HBase小組成功搶救某公司自建HBase集群,挽救30+T數據的讀者反饋,對HBase的逆向工程比較感興趣,并咨詢如何使用相應工具進行運維等等。總的來...
閱讀 1353·2023-01-11 13:20
閱讀 1699·2023-01-11 13:20
閱讀 1211·2023-01-11 13:20
閱讀 1902·2023-01-11 13:20
閱讀 4161·2023-01-11 13:20
閱讀 2751·2023-01-11 13:20
閱讀 1397·2023-01-11 13:20
閱讀 3664·2023-01-11 13:20