我正在尝试NN元数据恢复。我已经备份了Namenode和Journal节点元数据。它包含编辑日志和fsimages。
我的系统中有两个NN。我以常规频率备份两个NN(hdfs元数据和QJM元数据)上的元数据。我想在最坏的情况下测试恢复过程。假设NN和Journal节点都已关闭,元数据已完全删除。
我想从备份中恢复NN元数据并启动NN。我知道可能会有数据丢失,因为备份后的最新更改将会丢失。
问题:
已尝试的步骤:
替代方法:将所有编辑日志和fsimage恢复到hdfs和qjm目录并启动NN但仍然失败。
NN都失败了,我无法提起。我不想格式化hdfs,因为它会更改群集ID,备份将无法使用。
例外:
答案 0 :(得分:1)
您可以启用namenode并启用recover flag。 Namenode recover将处理损坏的maetadata。
./bin/hadoop namenode -recover
答案 1 :(得分:1)
由于最新的FsImage和Edit已丢失或损坏,您应该尝试恢复元数据
./bin/hadoop namenode -recover
参考:NameNode Recovery Tools for the Hadoop Distributed File System
因为日志与namenode不同步,所以你应该重新启动它
./bin/hdfs namenode -initializeSharedEdits
由于恢复的FsImage丢失了自上次备份以来更新的最新数据,因此应检查并删除损坏的数据
./bin/hadoop fsck -delete /
如果你不做fsck,那么namenode可能会陷入安全模式,因为有太多无响应的阻塞。
答案 2 :(得分:0)
启动所有JournalNode。确保已复制fsimage,fsimage.md5和VERSION文件。然后运行hdfs namenode -initializeSharedEdits -force,它将只格式化JournalNode。然后启动NameNode(1)。它应该工作。如果它不起作用,请告诉我。