大数据运维:datanode启动后挂了Initialization failed for Block pool <registering>
1.案發(fā)現(xiàn)場還原
? ? ?datanode節(jié)點因為壞盤,機器卡死掉線,datanode退役。把壞盤目錄去掉后,重啟datanode后,出現(xiàn)運行一會后dn自動掛掉的情況。
? ?查看日志報錯如下:
1月 8, 上午10點26:12.689 WARN org.apache.hadoop.hdfs.server.common.Storage Failed to analyze storage directories for block pool BP-465426754-10.5.32.151-1456251355718 java.io.IOException: BlockPoolSliceStorage.recoverTransitionRead: attempt to load an used block storage: /hadoop8/dfs/dn/current/BP-465426754-10.5.32.151-1456251355718at org.apache.hadoop.hdfs.server.datanode.BlockPoolSliceStorage.loadBpStorageDirectories(BlockPoolSliceStorage.java:212)at org.apache.hadoop.hdfs.server.datanode.BlockPoolSliceStorage.recoverTransitionRead(BlockPoolSliceStorage.java:244)at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:395)at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:477)at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1424)at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1385)at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:228)at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:829)at java.lang.Thread.run(Thread.java:745) 11月 8, 上午10點26:12.690 WARN org.apache.hadoop.hdfs.server.common.Storage Failed to add storage for block pool: BP-465426754-10.5.32.151-1456251355718 : BlockPoolSliceStorage.recoverTransitionRead: attempt to load an used block storage: /hadoop8/dfs/dn/current/BP-465426754-10.5.32.151-1456251355718 11月 8, 上午10點26:12.690 INFO org.apache.hadoop.hdfs.server.common.Storage Storage directory [DISK]file:/hadoop9/dfs/dn/ has already been used. 11月 8, 上午10點26:12.722 INFO org.apache.hadoop.hdfs.server.common.Storage Analyzing storage directories for bpid BP-465426754-10.5.32.151-1456251355718 11月 8, 上午10點26:12.722 WARN org.apache.hadoop.hdfs.server.common.Storage Failed to analyze storage directories for block pool BP-465426754-10.5.32.151-1456251355718 java.io.IOException: BlockPoolSliceStorage.recoverTransitionRead: attempt to load an used block storage: /hadoop9/dfs/dn/current/BP-465426754-10.5.32.151-1456251355718at org.apache.hadoop.hdfs.server.datanode.BlockPoolSliceStorage.loadBpStorageDirectories(BlockPoolSliceStorage.java:212)at org.apache.hadoop.hdfs.server.datanode.BlockPoolSliceStorage.recoverTransitionRead(BlockPoolSliceStorage.java:244)at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:395)at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:477)at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1424)at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1385)at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:228)at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:829)at java.lang.Thread.run(Thread.java:745)核心最后fetal報錯如下,dn服務(wù)停止:?
11月 8, 上午10點26:12.723 WARN org.apache.hadoop.hdfs.server.common.Storage Failed to add storage for block pool: BP-465426754-10.5.32.151-1456251355718 : BlockPoolSliceStorage.recoverTransitionRead: attempt to load an used block storage: /hadoop9/dfs/dn/current/BP-465426754-10.5.32.151-1456251355718 11月 8, 上午10點26:12.723 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode Initialization failed for Block pool <registering> (Datanode Uuid 889c4b61-14c2-4bca-8ad0-6f7d378511cd) service to bd15-21-33-62/10.90.48.127:8040. Exiting. java.io.IOException: All specified directories are failed to load.at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:478)at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1424)at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1385)at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:228)at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:829)at java.lang.Thread.run(Thread.java:745) 11月 8, 上午10點26:12.723 WARN org.apache.hadoop.hdfs.server.datanode.DataNode Ending block pool service for: Block pool <registering> (Datanode Uuid 889c4b61-14c2-4bca-8ad0-6f7d378511cd) service to bd15-21-33-62/10.90.48.127:8040 11月 8, 上午10點26:12.723 INFO org.apache.hadoop.hdfs.server.datanode.DataNode Removed Block pool <registering> (Datanode Uuid 889c4b61-14c2-4bca-8ad0-6f7d378511cd) 11月 8, 上午10點26:14.724 WARN org.apache.hadoop.hdfs.server.datanode.DataNode Exiting Datanode 11月 8, 上午10點26:14.726 INFO org.apache.hadoop.util.ExitUtil Exiting with status 0 11月 8, 上午10點26:14.729 INFO org.apache.hadoop.hdfs.server.datanode.DataNode SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down DataNode at bd15-21-131-85/10.21.131.85 ************************************************************/?2. 分析解決
? ? 因為這種是一個大類報錯,拋出的異常
排查1:?namenode 和 datanode 集群 ID 不匹配?
? ? ?仔細查看了異常節(jié)點的所有數(shù)據(jù)盤符下的clusterid和namenode的ClusterID發(fā)現(xiàn)并沒有不同,排除此方法。
?尖叫提示:
? ? ? 注意,這種clusterID不一致的情況,一般是是集群namenode 格式化時才會出現(xiàn)的情況,比如集群下線了一個節(jié)點,然后重新格式化namenode,再把已經(jīng)下線的節(jié)點上線集群,發(fā)現(xiàn)報錯,clusterid不一致(因為格式化集群會重新分配clusterid),這種clusterid不一致的一般是小白學(xué)習(xí)中才會出現(xiàn)的,生產(chǎn)集群你給我格式化namenode看看,老板會讓你懷疑人生,牢底坐穿。
? ? ? 所以這種解決方式比如重新格式化namenode,格式化集群肯定可以解決問題,但是不具有實際實操意義。跟你重裝一下集群一個道理,簡單粗暴沒啥意義。
?排查2: uuid不一致的問題?
? ? ? ? ? 其實一般不會有這種問題,比如uuid不一致等。? ? ? ? ??
排查3:磁盤數(shù)據(jù)目錄有異常,讀取數(shù)據(jù)異常,造成整個節(jié)點掛了。
開啟日志的debug模式,查看詳細信息,慎用,因為會有大量日志,記得關(guān)閉
?
日志查看是/hadoop7數(shù)據(jù)目錄有問題,進入查看,
?問題解決:
? ? ?發(fā)現(xiàn)hadoop7目錄下有個數(shù)據(jù)目錄權(quán)限異常,造成加載失敗,造成整個dn加載失敗,無法注冊。首先把/hadoop7目錄直接從datanode的data_dir中刪除。重新啟動dn即可。
尖叫提示:
? ? ? ? ?有時候報錯只是一個大類的報錯,拋出的異常,誘因有可能有多種。所以這個時候去查看詳細的日志,debug日志,看日志從哪里開始異常的,逐步排查,而不是直接查看fetal失敗的日志去百度,大類報錯很難百度到問題。生產(chǎn)集群一個大類報錯往往有很多種誘因造成,排查是個細致活,盡可能查看詳細的日志。
總結(jié)
以上是生活随笔為你收集整理的大数据运维:datanode启动后挂了Initialization failed for Block pool <registering>的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杭电ACM-LCY算法进阶培训班-专题训
- 下一篇: Duplicate entry 'san