无法在hadoop中启动名称节点

t5fffqht  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(325)

我正在本地系统中运行hadoop,但是 ./start-all.sh 命令其运行除名称节点以外的所有功能,同时运行它的连接被拒绝,并在日志文件中打印以下异常

java.io.ioexception : there appears to be a gap in the edit log, we expected txid 1, but got txid 291.

你能帮帮我吗。

flvtvl50

flvtvl501#

在启用恢复标志的情况下启动namenode。使用以下命令

./bin/hadoop namenode -recover
zf2sa74q

zf2sa74q2#

hadoop nn中的元数据包括: fsimage :包含文件系统在某个时间点的完整状态 edit logs :包含在最近的fsimage之后所做的每个文件系统更改(文件创建/删除/修改)。
如果列出nn工作区目录中的所有文件,您将看到文件包括:

fsimage_0000000000000000000 (fsimage)
fsimage_0000000000000000000.md5
edits_0000000000000003414-0000000000000003451 (edit logs, there're many ones with different name)
seen_txid (a separated file contains last seen transaction id)

当nn启动时,hadoop将加载fsimage并应用所有编辑日志,同时进行大量的一致性检查,如果检查失败,它将中止。让我们实现吧,我会的 rm edits_0000000000000000001-0000000000000000002 我的很多朋友 edit logs 在我的nn工作区,然后尝试 sbin/start-dfs.sh ,我将在日志中获得错误消息,如:

java.io.IOException: There appears to be a gap in the edit log.  We expected txid 1, but got txid 3.

所以你的错误信息表明 edit logs 不协调(可能已损坏或其中一些丢失)。如果你只想在本地玩hadoop而不关心它的数据,你可以 hadoop namenode -format 要重新格式化它并从头开始,否则您需要从snn或以前备份的地方恢复编辑日志。

相关问题