某大數據項目批處理集群hbase出現查詢超時,應客戶和應用側要求,重啟了hbase服務。重啟hbase后,在加載region的時候速度較慢,導致日志中心業務無法正常寫入、數據匯聚業務無法正常讀取。
由于應用側反饋無法正常查詢hbase表,因此和客戶及應用側協商確認后,針對hbase修改hbase.hstore.compaction.max=30參數,然后重啟hbase集群。
重啟后發現hbase加載region很慢,登入hbase集群后從后臺查看hbase表發現很多表region未上線,后臺查詢hbase表失敗。
查看hmaster ui界面發現很多region處于regions in transition狀態。且重啟前region數正常有7.5w左右,而目前加載的只有2w7左右。
排查hmaster日志,發現hbase正在做major compact和balance,且compact持續了很久,日志中顯示region注冊時,從hdfs上獲取block失敗,導致大量的skip信息。
恢復配置,重新重啟hbase集群,發現重啟仍然很慢。
全部停止hbase集群,只啟動hbase master節點上的的hmaster服務,然后重啟regionserver,發現重啟仍然很慢,查看日志,發現master初始化超時失敗:
hbase.master.namespace.init.timeout=36000000
hbase.master.initializationmonitor.timeout=48000000
參數調整完畢后,重新啟動整個hbase(只啟動226節點的hmaster),等待region加載上線。
后臺測試hbase,新建表和讀寫都正常,日志中心業務恢復正常,但針對部分歷史大數據量的表讀寫仍然失敗。
查看region,仍有處于RIT狀態的:
針對部分上線困難的region使用assign regionname命令手動上線:
經過處理后,region全部加載完成,沒有發現處于RIT狀態的region,hbase及其業務全部恢復正常。
hbase重啟時,由于hfile文件較多,導致調整hbase.hstore.compaction參數后,產生大量的compaction.
hbase重啟時,hbase在做region rebalance和split,進一步加劇了集群的負擔,最終導致重啟緩慢。
hbase集群region數較多,平均每個regionserver節點已經超過350個region。
hbase balance策略需要調整,rebalance一段時間后,又會分部不均。
制定hbase定期巡檢計劃,完善現有監控指標,實時掌握hbase集群健康情況。
隨著hbase接入應用和數據的增加,定期和應用廠商反饋各方對hbase的使用情況,并要求應用定期對過期表進行清理。
常用hbase表建議應用使用天表。
改進hbase rebalance策略,確保regionserver上region均衡分部。
結合此次故障暴露出的問題,我們總結了Hbase模型設計方面的一些規范和建議:
HBase在新建一個表時如果不指定預分配Region,則默認為該表只分配一個Region。在數據加載時,所有數據都會加載到該Region,導致單節點負載過高,加載性能降低,從而影響入庫性能。因此需要在建表時預先為該表在所有節點上分配多個Region,從而將所有節點高效利用起來。
預建Region的個數需要根據話單文件大小和節點個數來確定。由于每個Region大小超過一定數值后,HBase會自動進行Region分裂,導致Region不均勻,使得各臺節點的壓力不均,影響HBase的性能,因此預建Region的基本原則是盡量避免Region的自動分裂。
根據最佳實踐經驗,每個RegionServer上的Region個數為100左右的情況下HBase性能最好。因此每張表預建的Region數目應當小于等于100*RegionServer個數/表的個數。同時每個Region的文件大小(hbase.hregion.max.filesize)推薦配置為10GB,并在每天晚上空閑時對表做major_compact處理,以提高HBase的查詢性能。
訪問模式是HBase設計的主要部分,弄清應用將如何訪問數據,識別被訪問的數據類型。大多數應用可以分成讀操作密集或寫操作密集兩種,以及讀寫均密集型,需要針對不同的訪問模型來設計不同的rowkey。
使用salted或promoted字段行鍵可以在寫的分布和順序讀取得較好的平衡,如果你只做隨機讀,使用隨機key是最合理的??梢员苊鈘egion的熱點問題。
更多精彩干貨分享
點擊下方名片關注
IT那活兒
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129917.html
摘要:本文就運維的原理基礎開始入手,重點講解數據完整性,以及元數據逆向工程恢復數據完整性的原理方法。小結本文介紹了運維基礎原理中的數據完整性以及逆向元數據修復原理,并舉例介紹兩個逆向修復元數據的工具和實用執行步驟。 背景鑒于上次一篇文章——云HBase小組成功搶救某公司自建HBase集群,挽救30+T數據的讀者反饋,對HBase的逆向工程比較感興趣,并咨詢如何使用相應工具進行運維等等。總的來...
摘要:如果頻繁遇到這個問題可能是的參數或者其他方面設置的不合理,需要調整一下。 HBase本篇目錄HBase某一個表數據無法寫入,也無法讀取,從WebUI界面查看到有多個Region狀態為region in transaction是因為?讀取、寫入數據時,為什么找不到region?HBase某一個表數據無法寫入,也無法讀取,從WebUI界面查看到有多個Region狀態為region in tran...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20