【发布时间】:2012-03-15 00:00:18
【问题描述】:
场景 1:
HDFS fsimage 和 editlog 被写入多个位置,包括 NFS 挂载。
A) NameNode 守护进程崩溃: 解决方案: 重启Namenode进程即可
B) 运行名称节点的主机已关闭。
解决方案:
- 使用空的 dfs.name.dir 在不同的主机中启动名称节点
- 将 dfs.name.dir 指向我们拥有元数据副本的 NFS 挂载。 或
- 在将 fs.checkpoint.dir 从辅助 NameNode 指向检查点目录后启动 namenode 时使用 --importCheckpoint 选项
- 将 fs.default.name 更改为备份主机名 URI,并使用 slaves 文件中的所有从 IP 重新启动集群。
注意 - 我们可能会错过在最后一个检查点之后可能发生的编辑。
场景二:
HDFS fsimage 被写入单个目录。
A ) NameNode 守护进程崩溃: 解决方案:未知
B ) 主机在名称节点运行的地方停机。
解决方案:
- 创建一个空白目录,将 dfs.name.dir 指向 (1) 中的目录
- 在将 fs.checkpoint.dir 从辅助 NameNode 指向检查点目录后,使用 -importCheckpoint 启动 Namenode
- 将 fs.default.name 更改为备份主机名 URI,并使用 slaves 文件中的所有从 IP 重新启动集群。
这样我们会再次错过上次检查点后编辑的文件。
如果这是我们可以手动恢复集群的方法,请告诉我。
【问题讨论】:
-
你能编辑你的帖子以包含一个正确的问题吗?我不确定你在问什么。如果您有一些日志文件 sn-p,也将很有帮助。它将帮助我诊断您的问题。谢谢
-
我给出了一些生产场景。场景一和场景二怎么办。获取Namenode不同的恢复技术
-
现在改问题
-
@Jagaran : 你能告诉我在第二个场景 A 中,在场景 1 中重新启动 namenode 不会解决问题吗?
-
@Jagaran 你也可以粘贴你的 StackTrace 吗?我认为它也是我的解决方案。