恢复 Hadoop NameNode 故障

Posted

技术标签:

【中文标题】恢复 Hadoop NameNode 故障【英文标题】:Recover Hadoop NameNode Failure 【发布时间】: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 吗?我认为它也是我的解决方案。 【参考方案1】:

在生产环境中,您应该使用quorum of journalling nodes 或共享HA-NFS storage 以HA 模式运行NameNodes,以用于编辑日志事务文件。如果您不想或不使用 HA,则需要运行 NN,其中至少有两个存储目录用于图像和编辑日志,最好将一个作为软挂载的 NFS 挂载点,用于名称系统的自动机器外持久性.

如果您只有一个存储目录并且没有 HA 配置,那么您可以获得的最佳结果是过去时期的检查点 - 如果您丢失了所有文件。如果您没有丢失文件,您可以尝试hadoop namenode -recover 选项,如post 所示,以便能够恢复图像以及部分(或全部)编辑。

【讨论】:

在失败的 Namenode 上执行 hadoop namenode -recover 选项有什么风险。 风险在于丢失您要求恢复模式跳过的更改。这些可以是从文件或目录创建到属性修改(例如访问时间更新)的任何内容。

以上是关于恢复 Hadoop NameNode 故障的主要内容,如果未能解决你的问题,请参考以下文章

hadoop调优

HDFS中NameNode发生故障没有备份从SecondNameNode恢复

Hadoop 从 namenode 和 datanode 文件恢复

使用SecondaryNameNode恢复NameNode的数据

使用SecondaryNameNode恢复NameNode的数据

013 Hadoop 高可用 - Namenode 自动故障切换