我正在尝试NN元数据恢复。我已经采取备份Namenode和日志节点元数据。它包含编辑日志和fimage。
在我的系统中有两个nn。我在两个nn上备份元数据(hdfs元数据&QJM元数据)。我想在最坏的情况下测试恢复程序。假设NNs和Journal节点都关闭了,元数据被完全删除。
我想从备份中恢复NN元数据并启动NN。我知道可能会有数据丢失,因为备份后所做的最新更改将会丢失。
:
- 你认为这种情况可能/可行吗?
- 我正面临一些与txn id不匹配相关的问题,提交txn id。请告诉我是否有解决方案。
步骤尝试:
- 对NN和QJM进行元数据备份。hdfs文件操作(新建文件)。
- 在两台机器上停止NN和Journal节点。
- 删除/data/hdfs和journal目录下的元数据。
- 从备份中恢复fimages(已返回一段时间)。
- 开始神经网络。
另一种方法:恢复所有的编辑日志和fimage到hdfs和qjm目录,并启动NN,但仍然失败。
两个神经网络都下降了,我无法启动。我不想格式化hdfs,因为它会改变集群ID,备份将不可用。
:
- 编辑日志中似乎有空白。我们期望txid 71453,但得到txid 71466
- 客户端试图将提交的txid从71599向后移动到71453 recoverUnfinalizedSegments请求日志失败。决定将日志同步到startTxId: 71453,但是logger 10.204.64.26:8485已经看到txid 71599提交
-
因为最新的FsImage和Edit已经丢失或损坏,您应该尝试恢复元数据
./bin/hadoop namenode -recover
参考:NameNode Recovery Tools for Hadoop分布式文件系统
-
因为日志没有与namenode同步,你应该重新创建它
./bin/hdfs namenode -initializeSharedEdits
-
因为恢复的FsImage已经丢失了自上次备份以来更新的最新数据,您应该检查并删除损坏的数据
./bin/hadoop fsck -delete /
如果你不执行fsck, namenode可能会卡在安全模式,因为有太多的无响应块。
可以启用恢复标志启动namenode。Namenode恢复将处理损坏的元数据。
./bin/hadoop namenode -recover
启动所有JournalNode。确保你已经复制了fimage, fimage。md5和VERSION文件。然后执行hdfs namenode -initializeSharedEdits -force,只格式化JournalNode。然后启动NameNode(1)。这应该行得通。