一旦主 NN 发生故障,自动从 Java 应用程序连接到 HDFS 辅助 NN

Posted

技术标签:

【中文标题】一旦主 NN 发生故障,自动从 Java 应用程序连接到 HDFS 辅助 NN【英文标题】:Automatically connect to HDFS secondary NN from Java application, once the primary NN goes down 【发布时间】:2018-01-18 00:09:11 【问题描述】:

我有一个简单的 java 客户端,可以将文件保存到 HDFS - 配置有 1 个名称节点。为此,我使用 hadoop 配置,指定默认文件系统,如:

org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();
conf.set("fs.defaultFS", "hdfs://NNip:port");

但是,将来我需要连接到一个配置有 1 个活动名称节点和 1 个备用名称节点的 hdfs,如果活动名称节点出现故障,则自动使用备用名称节点。

有人对如何实现这一点有任何建议吗?任何链接/示例都将不胜感激,因为我对任何与 Hadoop 平台相关的东西还是新手。

谢谢

【问题讨论】:

【参考方案1】:

默认情况下,Configuration 变量将读取类路径中的 hdfs-site.xml 文件。

理想情况下,您应该在您的 Java 应用程序中拥有此文件,或者在操作系统中定义一个 HADOOP_CONF_DIR 环境变量。这就是hdfs CLI 工具的工作方式,例如,它只是转发到 Java 类。

那么,如果您的集群使用 Namenode HA,它应该已经知道 fs.defaultFS 的值设置为,所以您不需要自己设置。

如果您想以编程方式执行此操作,则需要为名称节点和 "nameservice" for HDFS, which properties can be found in that XML file 配置 Zookeeper

【讨论】:

以上是关于一旦主 NN 发生故障,自动从 Java 应用程序连接到 HDFS 辅助 NN的主要内容,如果未能解决你的问题,请参考以下文章

mysql mha 主从自动切换 高可用

mysql主/从故障转移

自动故障转移在 Hadoop 中不起作用

LVS-Keepalived群集

mysql主从同步搭建和故障排除

mysql主从同步搭建和故障排除