2016-09-17 81 views
0

在故障转移过程中,Hadoop的ZKFC将负责在ANN < - > SNN之间切换。 但是在这个过程中有一个叫做围栏的步骤来确保关闭ANN。Hadoop高可用性查询

如果ANN的电源关闭,并且采用了sshfence的默认策略。

“切换不会发生,因为ssh进入ANN将无法正常工作,从而影响高可用性”

从文档

“然而,当故障发生时,它仍然是可能的之前的Active NameNode可以向客户端提供读取请求,这可能会过时,直到NameNode在尝试写入JournalNodes时关闭,因此,即使在使用仲裁日志管理器时也需要配置一些防护方法。 “

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

回答

0

Hdfs配置允许使用多种防护方法。

从文档:

“为了做到这一点,你必须至少配置一个击剑方法,这些被配置为一个回车分开的列表,这将尝试以直到一个指示。击剑已经成功了。“

重要的是要注意的是,这些方法应该实现某种超时机制或立即返回。最简单的方法是使用sshfence作为第二种方法(假设ANN已关闭),并使用超时和shell('/ bin/true')。例如:

<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是否关闭。

+0

根据我的理解,配置多种防护方法并不能解决此问题中描述的问题。 “前面的活动NameNode仍可能向客户端提供读取请求” 所有分布式系统中的隔离概念是共同的还是仅与Hadoop有关?其他人如何处理陈旧读取的可能性? –

+0

@pavankumarreddy配置多种击剑方法解决了您提到的另一个问题: “_Switch over不会发生,因为ssh进入ANN不会工作,因此会影响高可用性”#: Stale reads will be sshfence itself。它会ssh到namenode并杀死namenode进程。但是,如果您正在寻找更可靠的解决方案,请查看电源防护或其他解决方案[此处](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Cluster_Suite_Overview/) S2-击剑-概述-CSO.html) –