Hadoop 如何确定 Namenode 发生故障或不工作?
我知道在 Hadoop 中,Namenode 是主要节点,它保留所有元数据,通过心跳识别数据节点的故障,并在数据节点发生故障时选择复制数据。
如果Namenode发生故障,哪个系统识别出故障,恢复过程是怎样的?
最佳答案
这取决于您所谈论的 Hadoop 版本。在 Hadoop 2 之前,Namenode
是一个单点故障,因此如果它发生故障,则意味着您的集群将无法使用。即使 SecondaryNameNode
在这种情况下也无济于事,因为它仅用于检查点,而不是作为 NameNode
的备份。当 NameNode
出现故障时,管理员之类的人必须手动重启 NameNode
。
但是从 Hadoop 2 开始,您有更好的方法来处理 NameNode
中的故障。您可以同时运行 2 个冗余 NameNode
,这样如果其中一个 Namenode
发生故障,集群将快速故障转移到另一个 NameNode
。
它的工作方式非常透明,基本上 DataNodes
将向两个 NameNodes
发送报告,这样如果一个失败,另一个将准备好用于主动模式。对于客户端,它只需联系配置的每个 NameNode
,直到找到事件节点。因此,如果它收到回复说要在别处尝试,或者如果 NameNode
没有回复,它就知道它需要使用不同的 NameNode
。
这是取自 the Cloudera blog 的模式这更详细地解释了这一点:
你也可以看看the HA article on the official documentation关于如何进行设置。
关于hadoop - Hadoop 中的名称节点故障和恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20114123/