1. 先看宕机后的损失如何,如果是内存中的数据丢失,但磁盘数据还在,可以将 secondary namenode 的工作目录 copy 到 namenode 的工作目录中,恢复上一次 checkpoint 的数据,这样可以恢复大部分数据,但不能恢复所有数据,因为有些数据还没做 checkpoint。
2. 也可以设置 namenode 的工作目录在多块磁盘上,那么 edits 日志文件就会同时写在多块磁盘上,如果一个磁盘坏了,那另一块磁盘上仍保存着数据。这两个磁盘是可以并发的,磁盘 IO 不会起冲突。
3. 最终解决方案是在建立集群初期的时候建立 NameNode HA 高可用模式。