Java 基于HADOOP\u HOME自动加载HDFS配置?

Java 基于HADOOP\u HOME自动加载HDFS配置?,java,hadoop,hdfs,Java,Hadoop,Hdfs,我正在开发一个Java程序,与已经运行的hadoop集群进行接口。该程序已将HADOOP\u HOME作为环境变量传递给它 基于此值,我需要在开始与HDFS/MapReduce交互之前加载所有必要的配置资源。我认为我需要的文件是基于。我当前的解决方案如下所示: final String HADOOP_HOME = System.getEnv("HADOOP_HOME"); Configuration conf = new Configuration(); conf.addResource(ne

我正在开发一个Java程序,与已经运行的hadoop集群进行接口。该程序已将HADOOP\u HOME作为环境变量传递给它

基于此值,我需要在开始与HDFS/MapReduce交互之前加载所有必要的配置资源。我认为我需要的文件是基于。我当前的解决方案如下所示:

final String HADOOP_HOME = System.getEnv("HADOOP_HOME");
Configuration conf = new Configuration();

conf.addResource(new Path(HADOOP_HOME, "src/core/core-default.xml"));
conf.addResource(new Path(HADOOP_HOME, "src/hdfs/hdfs-default.xml"));
conf.addResource(new Path(HADOOP_HOME, "src/mapred/mapred-default.xml"));
conf.addResource(new Path(HADOOP_HOME, "conf/core-site.xml"));
conf.addResource(new Path(HADOOP_HOME, "conf/hdfs-site.xml"));
conf.addResource(new Path(HADOOP_HOME, "conf/mapred-site.xml"));

FileSystem hdfs = new FileSystem(conf);

有没有更干净的方法?希望有一种不需要显式设置每个资源的方法?

您可以使用
hadoop jar
运行jar。这会自动设置所有内容。

但这意味着我正在以hadoop map reduce作业的形式运行代码,不是吗?这有什么影响?你有答案吗?我需要执行一个jar(不是mapreduce作业)并加载配置。Hadoop jar设置环境,您在jar中做什么取决于您自己。