日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HBase meta元数据损坏导致hbase master初始化失败

發(fā)布時間:2025/3/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HBase meta元数据损坏导致hbase master初始化失败 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

故障起因:

跑kylin任務,過程出錯,異常信息:Direct buffer memory,

java.io.IOException: java.lang.OutOfMemoryError: Direct buffer memoryat org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.handleException(HRegion.java:5607)at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.<init>(HRegion.java:5579)at org.apache.hadoop.hbase.regionserver.HRegion.instantiateRegionScanner(HRegion.java:2627)at org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:2613)at org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:2595)at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:2282)at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32295)

重啟HBase所有服務后,啟動正常,一分鐘后ambari顯示,所有region server正常,但是active master和standby master全部掛掉。仍然報錯:Direct buffer memory,修改hbase-env文件中的HBase off-heap MaxDirectMemorySize參數從4G調大到6G,重啟HBase后,Direct buffer memory異常消失。但某些節(jié)點的系統(tǒng)meta表一直處于RIT狀態(tài)。

癥狀描述:

1、region in transation

Ambari 顯示HBase master 正常啟動,hbase master ui :紅色警告hbase:meta region in transation,在其中一個數據節(jié)點,且一直在持續(xù),估計HBase 元數據文件損壞,已經落入永久RIT狀態(tài)

2、查看region server報錯

去處于RIT狀態(tài)的region server查看實時log,主要有三種報錯:

  • access denied
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=hbase, access=WRITE, inode="/apps/hbase/data/archive/data/GatXtcYysLcsk/KYLIN_BM5CEA4Y43/473ee8eb537051873792fdb417f866ac/F1":root:hdfs:drwxr-xr-x
  • too many open files
2018-03-20 21:23:36,518 WARN [62309924@qtp-666312528-1 - Acceptor0 SelectChannelConnector@0.0.0.0:16030] mortbay.log: EXCEPTION java.io.IOException: Too many open filesat sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:422)at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250)at org.mortbay.jetty.nio.SelectChannelConnector$1.acceptChannel(SelectChannelConnector.java:75)at org.mortbay.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:695)at org.mortbay.io.nio.SelectorManager.doSelect(SelectorManager.java:193)at org.mortbay.jetty.nio.SelectChannelConnector.accept(SelectChannelConnector.java:124)at org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:708)at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

查看hbase用戶、hdfs用戶的ulimit -a 發(fā)現open_files并不小,hbase open_files=32000應該夠用。
3、hbase shell 執(zhí)行status 報錯: HBase master failed to initization
4、執(zhí)行

su hbase hbase hbck -fixMeta

重試35次后,仍然報錯:

2018-03-19 19:09:36,553 FATAL [hdmaster3:16000.activeMasterManager] master.HMaster: Unhandled exception. Starting shutdown. java.io.IOException: Failed to get result within timeout, timeout=60000msat org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:206)at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:60)at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:327)at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:302)at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:167)at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:162)at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:794)at org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:602)at org.apache.hadoop.hbase.MetaTableAccessor.fullScanOfMeta(MetaTableAccessor.java:143)at org.apache.hadoop.hbase.MetaMigrationConvertingToPB.isMetaTableUpdated(MetaMigrationConvertingToPB.java:163)at org.apache.hadoop.hbase.MetaMigrationConvertingToPB.updateMetaIfNecessary(MetaMigrationConvertingToPB.java:130)at org.apache.hadoop.hbase.master.HMaster.finishActiveMasterInitialization(HMaster.java:824)at org.apache.hadoop.hbase.master.HMaster.access$500(HMaster.java:214)at org.apache.hadoop.hbase.master.HMaster$1.run(HMaster.java:1884)at java.lang.Thread.run(Thread.java:745)

調整參數:hbase.client.scanner.timeout.period,由默認60s改為600s,等待600s后master仍然會掛掉,所以考慮根本原因還是數據損壞。

解決途徑:

1、停止hbase所有服務
2、執(zhí)行命令:
hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair
離線修復meta元數據,因為hbase hbck -fixMeta只能在master正常,數據表丟失的情況下使用,master初始化失敗時,無法使用。
在此命令執(zhí)行過程中,先后出過多個異常:
1)kylin_meta表的region中有重復starttime,轉移meta數據
2)WALS文件報錯,轉移到其他位置
3)成功啟動master后,多數region上線,但仍有個別非meta表的region 處于RIT狀態(tài),強行刪除后,過一段時間,所有region上線,表數據恢復。
3、刪除hbase znode,進入zookeeper 命令端,刪除hbase znode
4、啟動hbase
5、再有問題,可以執(zhí)行:
hbase hbck -repair修復數據

總結

這次的解決過程非常痛苦,生產環(huán)境出問題三天,在查master和region server 日志過程中走了很多彎路,也沒有找對方向,最終數據恢復了,但丟了kylin的元數據表,所有的cube都重新build的,要奉勸大家的是kylin的元數據要經常備份,至此雖然服務都起來了,但沒有找到引起這個問題的真正原因,或許的kylin本身的bug,或許是多次不停的掛掉重啟,導致meta表損壞、異常。

總結

以上是生活随笔為你收集整理的HBase meta元数据损坏导致hbase master初始化失败的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。