【问题标题】:Hadoop NameNode recovery from metadata backup从元数据备份中恢复 Hadoop NameNode
【发布时间】:2016-01-21 11:31:13
【问题描述】:

我正在尝试 NN 元数据恢复。我已经备份了 Namenode 和 Journal 节点元数据。它包含编辑日志和 fsimages。

我的系统中有两个 NN。我定期备份两个 NN(hdfs 元数据和 QJM 元数据)上的元数据。我想在最坏的情况下测试恢复过程。假设 NN 和 Journal 节点都已关闭,元数据已完全删除。

我想从备份中恢复 NN 元数据并启动 NN。我知道可能会丢失数据,因为备份后所做的最新更改会丢失。

问题

  1. 您认为这种情况可能/可行吗?
  2. 我面临一些与 txn id 不匹配、已提交的 txn id 相关的问题。请告知是否有相同的解决方案。

尝试的步骤:

  1. 备份 NN 和 QJM 的元数据。做一些hdfs文件操作 (创建新文件)。
  2. 停止两台机器上的 NN 和 Journal 节点。
  3. 从 /data/hdfs 和日志目录中删除元数据。
  4. 从备份中恢复 Fsimages(需要一些时间)。
  5. 启动 NN。它失败并出现以下异常。

替代方法:将所有编辑日志和 fsimage 恢复到 hdfs 和 qjm 目录并启动 NN,但仍然失败。

两个 NN 都已关闭,我无法启动。我不想格式化 hdfs,因为它会更改集群 ID,并且备份将无法使用。

例外情况

  1. 编辑日志中似乎存在间隙。我们期望 txid 71453,但得到 txid 71466
  2. 客户端试图将提交的 txid 从 71599 向后移动到 71453
  3. recoverUnfinalizedSegments 无法获取所需的日记帐。决定将日志同步到 startTxId: 71453 但记录器 10.204.64.26:8485 看到 txid 71599 已提交

【问题讨论】:

    标签: hadoop


    【解决方案1】:
    1. 由于最新的 FsImage 和 Edit 已丢失或损坏,您应该尝试恢复元数据

      ./bin/hadoop namenode -recover

      参考:NameNode Recovery Tools for the Hadoop Distributed File System

    2. 因为日志没有和namenode同步,你应该重新初始化它

      ./bin/hdfs namenode -initializeSharedEdits

    3. 由于恢复的FsImage丢失了上次备份后更新的最新数据,请检查并删除损坏的数据

      ./bin/hadoop fsck -delete /

      如果你不做 fsck,namenode 可能会卡在安全模式,因为太多无响应的块。

    【讨论】:

      【解决方案2】:

      您可以在启用恢复标志的情况下启动名称节点。 Namenode recover 将处理损坏的元数据。

      ./bin/hadoop namenode -recover
      

      【讨论】:

        【解决方案3】:

        启动所有 JournalNode 。确保您已复制 fsimage、fsimage.md5 和 VERSION 文件。然后运行 ​​hdfs namenode -initializeSharedEdits -force,它只会格式化 JournalNode 。然后启动 NameNode(1)。它应该工作。如果它不起作用,请告诉我。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多