目录
1. 背景
- 1. 背景
- 2. 解决办法
在服务器断电重启后,重新启动HDFS, 访问http://bigdata001:9870不能访问,而http://bigdata002:9870和http://bigdata003:9870是可以访问的
之后查看bigdata001上的/opt/hadoop-3.3.1/logs/hadoop-root-namenode-bigdata001.log,查看具体的问题如下:
2021-11-12 07:31:34,852 INFO org.apache.hadoop.hdfs.server.namenode.RedundantEditLogInputStream: Fast-forwarding stream 'http://bigdata003:8480/getJournal?jid=nnha&segmentTxId=229381&storageInfo=-66%3A1932109354%3A1628776937801%3ACID-d8b16624-7370-4346-b0e4-a10ba44a8c26&inProgressOk=true' to transaction ID 130043
2021-11-12 07:31:34,977 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
java.io.IOException: There appears to be a gap in the edit log. We expected txid 130043, but got txid 229381.
at org.apache.hadoop.hdfs.server.namenode.MetaRecoveryContext.editLogLoaderPrompt(MetaRecoveryContext.java:95)
at org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader.loadEditRecords(FSEditLogLoader.java:268)
at org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader.loadFSEdits(FSEditLogLoader.java:182)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadEdits(FSImage.java:915)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:762)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:339)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1197)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:779)
at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:677)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:764)
at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:1018)
at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:991)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1767)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1832)
2021-11-12 07:31:34,983 INFO org.eclipse.jetty.server.handler.ContextHandler: Stopped o.e.j.w.WebAppContext@4397ad89{hdfs,/,null,STOPPED}{file:/opt/hadoop-3.3.1/share/hadoop/hdfs/webapps/hdfs}
2. 解决办法
- 将bigdata002的/opt/hadoop-3.3.1/journalnode/nnha/current上最新的edits文件,如:edits_0000000000000249666-0000000000000249667,用scp命令复制到bigdata001对应的目录下
[root@bigdata002 current]#
[root@bigdata002 current]# pwd
/opt/hadoop-3.3.1/journalnode/nnha/current
[root@bigdata002 current]#
[root@bigdata002 current]# ll -t | head
总用量 45388
-rw-r--r-- 1 root root 1048576 11月 12 06:34 edits_inprogress_0000000000000249668
-rw-r--r--. 1 root root 8 11月 12 06:34 committed-txid
-rw-r--r-- 1 root root 42 11月 12 06:34 edits_0000000000000249666-0000000000000249667
-rw-r--r-- 1 root root 2 11月 12 06:32 last-writer-epoch
drwxr-xr-x. 2 root root 6 11月 12 06:32 paxos
-rw-r--r-- 1 root root 2 11月 12 06:32 last-promised-epoch
-rw-r--r-- 1 root root 1048576 11月 12 06:29 edits_0000000000000249665-0000000000000249665
-rw-r--r-- 1 root root 1048576 11月 12 06:26 edits_0000000000000249664-0000000000000249664
-rw-r--r-- 1 root root 42 11月 12 06:26 edits_0000000000000249662-0000000000000249663
[root@bigdata002 current]#
[root@bigdata002 current]# scp edits_0000000000000249666-0000000000000249667 root@bigdata001:/opt/hadoop-3.3.1/journalnode/nnha/current
edits_0000000000000249666-0000000000000249667 100% 42 45.0KB/s 00:00
[root@bigdata002 current]#
然后在bigdata001上执行
[root@bigdata001 ~]#
[root@bigdata001 ~]# hdfs zkfc -formatZK
[root@bigdata001 ~]#
- 在bigdata001上执行以下命令
[root@bigdata001 bin]#
[root@bigdata001 bin]# pwd
/opt/hadoop-3.3.1/bin
[root@bigdata001 bin]#
[root@bigdata001 bin]# ./hadoop namenode -recover
[root@bigdata001 bin]#
后面的选项选择y,之后再选择c
- 最后用start-dfs.sh重启HDFS就可以了