一旦主 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的主要内容,如果未能解决你的问题,请参考以下文章