2014-06-09 27 views
6

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

我的系统中有两个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,但仍然失败。

这两个神经网络都关闭了,我无法提出。我不想格式化hdfs,因为它会更改群集ID,并且备份将不可用。

例外

  1. 有似乎是在编辑日志的间隔。我们预计txid 71453,但得到txid 71466
  2. 客户端尝试将提交的txid从71599向后移动到71453
  3. recoverUnfinalizedSegments对所需日志失败。决定将日志同步到startTxId:71453但记录器10.204.64.26:8485已经看到txid 71599落实

回答

1

您可以启用启用了恢复标志的namenode。 Namenode恢复将处理损坏的maetadata。

./bin/hadoop namenode -recover 
0

启动所有JournalNode。确保你已经复制了fsimage,fsimage.md5和VERSION文件。然后运行hdfs namenode -initializeSharedEdits -force,它将只格式化JournalNode。然后启动NameNode(1)。它应该工作。让我知道,如果它不起作用。

1
  1. 因为最新的FsImage和编辑已丢失或损坏,你应该尝试恢复元数据

    ./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,名称节点可能停留在安全模式,对于太多无响应的块。