一旦主要 NN 出现故障,自动从 Java 应用程序连接到 HDFS 次要 NN
Automatically connect to HDFS secondary NN from Java application, once the primary NN goes down
我有一个简单的 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,以防活动名称节点出现故障,自动使用备用名称节点。
有人对如何实现这一目标有任何建议吗?任何 link / 示例将不胜感激,因为我对与 Hadoop 平台相关的任何事物仍然是新手。
谢谢
Configuration
变量默认读取类路径中的 hdfs-site.xml 文件。
理想情况下,您应该将此文件与您的 Java 应用程序一起使用,或者在 OS 中定义一个 HADOOP_CONF_DIR
环境变量。这就是 hdfs
CLI 工具的工作方式,例如,它只是转发到 Java 类。
然后,如果你的集群正在使用 Namenode HA,它应该已经知道 fs.defaultFS
的值设置了什么,所以你不需要自己设置它。
如果您想以编程方式执行此操作,则需要为名称节点和
配置 Zookeeper
我有一个简单的 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,以防活动名称节点出现故障,自动使用备用名称节点。
有人对如何实现这一目标有任何建议吗?任何 link / 示例将不胜感激,因为我对与 Hadoop 平台相关的任何事物仍然是新手。
谢谢
Configuration
变量默认读取类路径中的 hdfs-site.xml 文件。
理想情况下,您应该将此文件与您的 Java 应用程序一起使用,或者在 OS 中定义一个 HADOOP_CONF_DIR
环境变量。这就是 hdfs
CLI 工具的工作方式,例如,它只是转发到 Java 类。
然后,如果你的集群正在使用 Namenode HA,它应该已经知道 fs.defaultFS
的值设置了什么,所以你不需要自己设置它。
如果您想以编程方式执行此操作,则需要为名称节点和