2011-04-08 72 views
2

如何以編程方式將任務添加到hadoop並在我的Java應用程序中運行? 任何想法?謝謝。Hadoop,正在運行的任務

+0

您可以將作業提交給Hadoop,並讓它們通過羣集上的Java應用程序運行。你是這個意思嗎? – 2011-04-08 12:53:42

+0

是的,這就是我想要做的。但是如何? – Gravedigger 2011-04-08 13:40:45

+0

k看我的回答;) – 2011-04-08 13:49:46

回答

4

在Java中,這是很容易的:

Configuration conf = new Configuration(); 
Job job = new Job(conf); 
job.setJarByClass(YOUR_MAPPER.class); 
job.setMapperClass(YOUR_MAPPER.class); 
job.setReducerClass(YOUR_REDUCER.class); 
job.setOutputKeyClass(YOUR_OUTPUT_KEY.class); 
job.setOutputValueClass(YOUR_OUTPUT_VALUE.class); 
FileInputFormat.addInputPath(job, new Path("YOUR_INPUT_PATH")); 
FileOutputFormat.setOutputPath(job, new Path("YOUR_OUTPUT_PATH")); 
System.exit(job.waitForCompletion(true) ? 0 : 1); 

如果您需要將其提交給您必須將這些值添加到配置對象集羣:

conf.set("fs.default.name", "hdfs://localhost:9000"); 
conf.set("mapred.job.tracker", "localhost:9001"); 

此時應更換端口和主機名到羣集conf的目錄中配置的值。

+0

但是,爲了執行hadoop上的作業,我必須每次輸入「bin/hadoop jar hadoop.jar main.UrlFetch輸入輸出」。 我想從我的web應用程序運行作業(例如解析許多網站),有時會控制完成並將結果傳遞給我的web應用程序。 – Gravedigger 2011-04-08 14:28:22

+0

實際上,這個片段可以在任何應用程序中使用。 – 2011-04-08 14:39:59

相關問題