5

场景一:

HDFS fsimage 和 editlog 被写入多个位置,包括 NFS 挂载。

A) NameNode Daemon Crash : 解决方法:重启Namenode进程即可

B) 主机在名称节点运行的地方关闭。

解决方案:

  1. 使用空的 dfs.name.dir 在不同的主机中启动名称节点
  2. 将 dfs.name.dir 指向我们拥有元数据副本的 NFS 挂载。或者
  3. 在将 fs.checkpoint.dir 指向辅助 NameNode 的检查点目录后,在启动 namenode 时使用 --importCheckpoint 选项
  4. 将 fs.default.name 更改为备份主机名 URI,并使用 slaves 文件中的所有从 IP 重新启动集群。

注意 - 我们可能会错过在最后一个检查点之后可能发生的编辑。

场景二:

HDFS fsimage 被写入单个目录。

A)NameNode 守护进程崩溃:解决方案:未知

B ) 主机在名称节点运行的地方关闭。

解决方案:

  1. 创建一个指向 dfs.name.dir 的空白目录到 (1) 中的目录
  2. 在将 fs.checkpoint.dir 从 Secondary NameNode 指向检查点目录后,使用 -importCheckpoint 启动 Namenode
  3. 将 fs.default.name 更改为备份主机名 URI,并使用 slaves 文件中的所有从 IP 重新启动集群。

这样我们会再次错过在最后一个检查点之后编辑的文件。

请让我知道这是否是我们可以手动恢复集群的方式。

4

1 回答 1

1

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

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

于 2012-11-15T19:13:43.923 回答