3
我正在開發一個Java程序來與已經運行的hadoop集羣進行交互。該程序已將HADOOP_HOME
作爲環境變量傳遞給它。基於HADOOP_HOME自動加載HDFS配置?
基於此值,我需要加載所有必要的配置資源,然後才能開始與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);
有沒有更乾淨的方法來做到這一點?希望這種方法不涉及明確設置每個資源?
但這意味着我正在運行我的代碼作爲hadoop地圖減少工作不是這樣嗎?那有什麼影響? – forhas 2013-11-25 12:07:57
你有答案嗎?我需要執行一個jar(不是map reduce作業)並加載配置。 – 2015-08-13 19:49:06
只運行Hadoop jar不會讓它成爲mapreduce作業。 Hadoop jar設置環境,你在jar裏面做什麼取決於你。 – 2015-08-13 20:16:50