我可以从终端成功完成一个hadoop流媒体工作,但我正在寻找通过api,eclipse或其他方式开始工作的方法。
我发现最接近的是这篇文章https://stackoverflow.com/questions/11564463/remotely-execute-hadoop-streaming-job,但它没有答案!
欢迎任何想法或建议。
答案 0 :(得分:2)
有趣的问题,我找到了一种方法来做到这一点,希望这对你也有帮助。
第一种方法应该适用于Hadoop 0.22:
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://xxxxx:9000");
conf.set("mapred.job.tracker", "hdfs://xxxxx:9001");
StreamJob sj = new StreamJob();
try {
ToolRunner.run(conf, sj, new String[] {
"-D", "stream.tmpdir=c:\\",
"-mapper", "/path/to/mapper.py",
"-reducer", "/path/to/reducer.py", "-input",
"/path/to/input", "-output",
"/path/to/output" });
} catch (Exception e) {
e.printStackTrace();
}
我还找到了你应该能够运行的this Java wrapper。
答案 1 :(得分:1)
查看Apache Oozie - 一旦通过XML定义了工作,就可以通过Http POST向oozie服务器启动工作
答案 2 :(得分:0)
当Hadoop流式传输作业以
运行时hadoop jar /home/training/Installations/hadoop-1.0.3/contrib/streaming/hadoop-streaming-1.0.3.jar -input input4 -output output4 -mapper / home / training / Code / Streaming / max_temperature_map。 rb -reducer /home/training/Code/Streaming/max_temperature_reduce.rb
然后执行org.apache.hadoop.streaming.HadoopStreaming。该类在hadoop-streaming-1.0.3.jar中的MANIFEST.MF中定义。检查org.apache.hadoop.streaming.HadoopStreaming java类中的代码以了解API详细信息。