Hadoop NameNode从元数据备份中恢复



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

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

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

:

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

步骤尝试:

  1. 对NN和QJM进行元数据备份。hdfs文件操作(新建文件)。
  2. 在两台机器上停止NN和Journal节点。
  3. 删除/data/hdfs和journal目录下的元数据。
  4. 从备份中恢复fimages(已返回一段时间)。
  5. 开始神经网络。

另一种方法:恢复所有的编辑日志和fimage到hdfs和qjm目录,并启动NN,但仍然失败。

两个神经网络都下降了,我无法启动。我不想格式化hdfs,因为它会改变集群ID,备份将不可用。

:

  1. 编辑日志中似乎有空白。我们期望txid 71453,但得到txid 71466
  2. 客户端试图将提交的txid从71599向后移动到71453
  3. recoverUnfinalizedSegments请求日志失败。决定将日志同步到startTxId: 71453,但是logger 10.204.64.26:8485已经看到txid 71599提交
  1. 因为最新的FsImage和Edit已经丢失或损坏,您应该尝试恢复元数据

    ./bin/hadoop namenode -recover

    参考:NameNode Recovery Tools for Hadoop分布式文件系统

  2. 因为日志没有与namenode同步,你应该重新创建它

    ./bin/hdfs namenode -initializeSharedEdits

  3. 因为恢复的FsImage已经丢失了自上次备份以来更新的最新数据,您应该检查并删除损坏的数据

    ./bin/hadoop fsck -delete /

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

可以启用恢复标志启动namenode。Namenode恢复将处理损坏的元数据。

./bin/hadoop namenode -recover

启动所有JournalNode。确保你已经复制了fimage, fimage。md5和VERSION文件。然后执行hdfs namenode -initializeSharedEdits -force,只格式化JournalNode。然后启动NameNode(1)。这应该行得通。

最新更新