在故障转移过程中,
Hadoop的ZKFC将负责在ANN SNN之间切换。
但是在此过程中,有一个称为隔离的步骤可确保关闭ANN。

如果ANN的电源关闭并且具有默认的sshfence策略。

“切换不会发生,因为SSH不能进入ANN并因此损害了高可用性”

从文档中

“但是,当发生故障转移时,以前的Active NameNode仍然有可能向客户端提供读取请求,这可能已经过时,直到NameNode在尝试写入JournalNodes时关闭为止。因此,它仍然即使在使用Quorum Journal Manager时也希望配置一些防护方法。”

  • 其他分布式系统如何在不影响高可用性的情况下解决此问题?
  • 如果上述问题已经存在,为什么hdfs不采用它?
  • 最佳答案

    HDFS配置允许使用多种屏蔽方法。

    从文档:

    “为此,您必须至少配置一种防护方法。这些方法配置为以回车符分隔的列表,将按顺序尝试该操作,直到一个表明防护成功为止。”

    需要注意的重要一点是,这些方法应实现某种超时机制或立即返回。最简单的方法是使用带有超时的sshfence和shell('/ bin / true')作为第二种方法(假设ANN处于关闭状态)。范例:

    <property>
      <name>dfs.ha.fencing.methods</name>
      <value>sshfence\nshell(/bin/true)</value>
    </property>
    <property>
      <name>dfs.ha.fencing.ssh.connect-timeout</name>
      <value>30000</value>
    </property>
    

    当然,您可以编写更复杂的脚本来检查ANN是否关闭。

    关于hadoop - 查询Hadoop高可用性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39550078/

    10-12 23:45