我已經編寫了一個使用Hadoop的Java程序。我使用「java -jar prog.jar」從命令行執行我的程序,我可以看到它在獨立模式下運行。我可以告訴,因爲JobTracker和TaskTracker守護進程不需要運行我的程序來成功執行。如果我使用「hadoop jar prog.jar」(關閉map/reduce守護進程)執行我的程序,那麼它自然不起作用。Hadoop Java程序總是以獨立模式運行
我想我的java程序在僞分佈式模式下執行,但我有一種感覺,它無法找到配置文件。我嘗試執行它爲「java -cp /usr/hadoop-1.1.1/conf -jar prog.jar」,以便將它指向配置文件所在的位置,但仍然沒有骰子。
我有一種感覺,類路徑是錯誤的或什麼的。我是一個noob,所以任何幫助表示讚賞。謝謝,
MJ
這裏是與配置對象我的工作開始的代碼片段。
Configuration config = new Configuration();
Job job = new Job(config);
job.setJobName("Test");
job.setJarByClass(MyMapper.class);
job.setMapperClass(MyMapper.class);
job.setReducerClass(MyReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setMapOutputKeyClass(LongWritable.class);
job.setMapOutputValueClass(Text.class);
job.setInputFormatClass(MyInputFormat.class);
FileInputFormat.addInputPath(job, new Path("hdfs://hadoop0.hq.net:54310/" + saFileName));
FileOutputFormat.setOutputPath(job, new Path("hdfs://hadoop0.hq.net:54310/" + saFileName + "-output"));
job.waitForCompletion(true);
我發現,如果我添加的配置文件手動像config.addResource(新路徑(「核心-site.xml中」)) ;那麼它工作正常。 – 2013-02-15 15:59:01
'bin/hadoop'腳本會爲你設置環境(類路徑,配置文件路徑等)。 'bin/hadoop jar'調用'core/org/apache/hadoop/util/RunJar.java',它調用你的主類。如果您使用'bin/hadoop jar'命令,則不需要手動添加資源,我認爲這將是一種首選方法。 – ericson 2013-02-18 15:17:45
我想要做的是創建一個具有可通過其啓動作業的Web界面的Java服務。作業完成後,我的服務會將結果發回。由於某種原因,bin/hadoop jar對我來說似乎並不合適。 – 2013-02-18 16:49:35