更新时间:2024-07-24 GMT+08:00

EditLog不连续导致NameNode启动失败

问题

在JournalNode节点有断电,数据目录磁盘占满,网络异常时,会导致JournalNode上的EditLog不连续。此时如果重启NameNode,很可能会失败。

现象

重启NameNode会失败。在NameNode运行日志中会报如下的错误:

解决方法

  1. 找到重启前的主NameNode,进入其数据目录(查看配置项“dfs.namenode.name.dir”可获取,例如/srv/BigData/namenode/current),得到最新的FSImage文件的序号。一般如下:

  2. 查看各JournalNode的数据目录(查看配置项“dfs.journalnode.edits.dir”可获取,例如/srv/BigData/journalnode/hacluster/current),查看序号从第一部获取到的序号开始的edits文件,看是否有不连续的情况(即前一个edits文件的最后一个序号 和 后一个edits文件的第一个序号 不是连续的,如下图中的edits_0000000000013259231-0000000000013259237就和后一个edits_0000000000013259239-0000000000013259246就是不连续的)。

  3. 如果有这种不连续的edits文件,则需要查看其它的JournalNode的数据目录或NameNode数据目录中,有没有连续的该序号相关的连续的edits文件。如果可以找到,复制一个连续的片段到该JournalNode。
  4. 如此把所有的不连续的edits文件全部都修复。
  5. 重启NameNode,观察是否成功。如还是失败,请联系技术支持。