Hadoop中的Namenode故障和恢复

Posted

技术标签:

【中文标题】Hadoop中的Namenode故障和恢复【英文标题】:Namenode failure and recovery in Hadoop 【发布时间】:2013-11-21 06:38:42 【问题描述】:

Hadoop 如何确定 Namenode 失败或不工作?

我知道在 Hadoop 中,Namenode 是保存所有元数据的主要点,它通过心跳识别数据节点的故障,并在数据节点故障的情况下选择复制数据。

如果Namenode发生故障,哪个系统识别故障,恢复过程是怎样的?

【问题讨论】:

这篇文章让我对 Namenode 故障和高可用性有了一个很好的了解。data-flair.training/blogs/… 【参考方案1】:

这取决于您所谈论的 Hadoop 版本。在 Hadoop 2 之前,Namenode 是单点故障,因此如果它发生故障,则意味着您的集群无法使用。即使SecondaryNameNode 在这种情况下也无济于事,因为它仅用于检查点,而不是NameNode 的备份。当NameNode 失败时,管理员等人将不得不手动重启NameNode

但是从 Hadoop 2 开始,您有了更好的方法来处理 NameNode 中的故障。您可以同时运行 2 个冗余 NameNodes,这样如果其中一个 Namenodes 发生故障,集群将快速故障转移到另一个 NameNode

它的工作方式非常透明,基本上DataNodes 将向NameNodes 发送报告,因此如果一个失败,另一个将准备好在活动模式下使用。对于客户端,它只是联系每个配置的NameNode,直到找到活动的。因此,如果它收到回复说在其他地方尝试,或者如果NameNode 没有回复,它知道它需要使用不同的NameNode

这是取自 the Cloudera blog 的架构,它更详细地解释了这一点:

您还可以查看the HA article on the official documentation,了解如何设置。

【讨论】:

如果他们都失败了会发生什么 URL hadoop.apache.org/docs/r2.2.0/hadoop-yarn/hadoop-yarn-site/… 失效了 @charles 我们还有 QJM 的概念,其中涉及到 Zookeeper,在主名称节点下有一个锁,每次从名称节点尝试获取密钥时,只有从名称节点/stand当主节点失败时,按名称节点可以获取密钥。这些东西如何协同工作? 如果主动和被动两个名称节点都出现故障,我们可以利用辅助名称节点来检索数据。

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

hadoop调优

Hadoop 从 namenode 和 datanode 文件恢复

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

使用SecondaryNameNode恢复NameNode的数据

使用SecondaryNameNode恢复NameNode的数据

Hadoop Datanode、namenode、secondary-namenode、job-tracker 和 task-tracker