Hadoop HDFS启动报异常:We expected txid 130043, but got txid 229381

1. 背景

在服务器断电重启后,重新启动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.<init>(NameNode.java:1018)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(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. 解决办法

  1. 将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 ~]#
  1. 在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

  1. 最后用start-dfs.sh重启HDFS就可以了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值