我有一个简单的Java客户端,可以将文件保存到HDFS - 配置了1个名称节点。为此,我使用hadoop配置,指定默认文件系统,如:
org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();
conf.set("fs.defaultFS", "hdfs://NNip:port");
但是,将来,我需要连接到配置了1个活动namenode和1个备用namenode的hdfs,如果活动namenode出现故障,请自动使用备用namenode。
有没有人对如何实现这一点有任何建议?任何链接/示例都会非常感激,因为我对Hadoop平台相关的任何内容都是新手。
由于
答案 0 :(得分:1)
默认情况下,Configuration
变量将读取类路径中的hdfs-site.xml文件。
理想情况下,您应该将此文件与Java应用程序一起使用,或者在操作系统中定义HADOOP_CONF_DIR
环境变量。这就是hdfs
CLI工具的工作方式,例如,它只是转发到Java类。
然后,如果您的群集正在使用Namenode HA,它应该已经知道fs.defaultFS
的值设置为什么,因此您不需要自己设置它。
如果您想以编程方式执行此操作,则需要为名称节点配置Zookeeper并"nameservice" for HDFS, which properties can be found in that XML file