无法在hadoop中启动名称节点

时间:2017-03-31 21:25:33

标签: hadoop

我在我的本地系统中运行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.
你能帮助我吗?

2 个答案:

答案 0 :(得分:2)

启用恢复标志启动namenode。使用以下命令

./bin/hadoop namenode -recover

答案 1 :(得分:1)

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并应用所有编辑日志,同时进行大量一致性检查,如果检查失败则会中止。让我们实现这一点,我会在我的NN工作区中的rm edits_0000000000000000001-0000000000000000002edit logs,然后尝试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恢复编辑日志或你以前备份过的地方。