Я запускаю hadoop в режиме псевдораспределения и использую потоковую передачу hadoop для выполнения операций уменьшения карты. Но проблема в том, что я получаю сообщение об ошибке Streaming Job Failed . Ниже приведен журнал:
журналы stderr
java.io.IOException: не удается запустить программу «input / StdInOut.exe»: ошибка CreateProcess = 2, система не может найти указанный файл
at java.lang.ProcessBuilder.start (ProcessBuilder.java:460)
в org.apache.hadoop.streaming.PipeMapRed.configure (PipeMapRed.java:166)
в org.apache.hadoop.streaming.PipeMapper.configure (PipeMapper.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke (Method.java:597)
в org.apache.hadoop.util.ReflectionUtils.setJobConf (ReflectionUtils.java:88)
в org.apache.hadoop.util.ReflectionUtils.setConf (ReflectionUtils.java:64)
в org.apache.hadoop.util.ReflectionUtils.newInstance (ReflectionUtils.java:117)
в org.apache.hadoop.mapred.MapRunner.configure (MapRunner.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke (Method.java:597)
в org.apache.hadoop.util.ReflectionUtils.setJobConf (ReflectionUtils.java:88)
в org.apache.hadoop.util.ReflectionUtils.setConf (ReflectionUtils.java:64)
в org.apache.hadoop.util.ReflectionUtils.newInstance (ReflectionUtils.java:117)
в org.apache.hadoop.mapred.MapTask.runOldMapper (MapTask.java:354)
в org.apache.hadoop.mapred.MapTask.run (MapTask.java:307)
в org.apache.hadoop.mapred.Child.main (Child.java:170)
Вызвано: java.io.IOException: ошибка CreateProcess = 2, система не может найти указанный файл
at java.lang.ProcessImpl.create (собственный метод)
at java.lang.ProcessImpl. (ProcessImpl.java:81)
at java.lang.ProcessImpl.start (ProcessImpl.java:30)
at java.lang.ProcessBuilder.start (ProcessBuilder.java:453)
... еще 20
Я знаю, что это говорит java.io.IOException: Невозможно запустить программу "input / StdInOut.exe": Ошибка CreateProcess = 2, система не может найти указанный файл , но файл присутствует как на локально, а также на hdf по тому же пути.
Вот реализация моего собственного картографа:
static void Main(string[] args)
{
string s;
while ((s = Console.ReadLine()) != null)
{
string[] words = s.Split(' ');
foreach (var word in words)
{
//Setting occurance of each word to 1
Console.WriteLine(word + "\t" + 1);
}
}
}
и я использую эту команду для выполнения своей работы в ssh:
bin/hadoop jar contrib/streaming/hadoop-*-streaming.jar -input input/sample.txt -output output -mapper input/StdInOut.exe -reducer NONE
Какие-нибудь решения?