我在我的本地系统中运行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.
你能帮助我吗?
答案 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-0000000000000000002
中edit 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恢复编辑日志或你以前备份过的地方。