我正在开发一个Java程序来与已经运行的hadoop集群进行交互。该程序已将HADOOP_HOME
作为环境变量传递给它。
基于此值,我需要在开始与HDFS / MapReduce交互之前加载所有必需的配置资源。我认为我需要的文件基于apache documentation。我目前的解决方案如下:
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);
有更清洁的方法吗?希望这种方式不涉及明确设置每个资源吗?
答案 0 :(得分:3)
使用hadoop jar <your-jar>
运行jar。这会自动设置所有内容。