ターミナルからHadoopストリーミングジョブを正常に開始できますが、API、Eclipse、またはその他の手段を介してSteamingジョブを開始する方法を探しています。
私が見つけた最も近いものはこの投稿https://stackoverflow.com/questions/11564463/remotely-execute-hadoop-streaming-jobでしたが、答えはありません!
任意のアイデアや提案を歓迎します。
ターミナルからHadoopストリーミングジョブを正常に開始できますが、API、Eclipse、またはその他の手段を介してSteamingジョブを開始する方法を探しています。
私が見つけた最も近いものはこの投稿https://stackoverflow.com/questions/11564463/remotely-execute-hadoop-streaming-jobでしたが、答えはありません!
任意のアイデアや提案を歓迎します。
興味深い質問ですが、これを行う方法を見つけました。これがあなたにも役立つことを願っています。
最初の方法はHadoop0.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();
}
また、実行できるはずのこのJavaラッパーも見つかりました。
Apache Oozieを見てください-XMLを介してジョブを定義したら、oozieサーバーへのHttpPOSTを介してジョブを起動できます
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の詳細を確認してください。