Je cours hadoop en mode Pseudo-Distribué et en utilisant hadoop streaming pour faire mes opérations de réduction de la carte. Mais le problème est que je reçois le message d'erreur Streaming Job Failed. Voici le journal:Hadoop Streaming dans .NET
journaux stderr
java.io.IOException: Impossible d'exécuter le programme "entrée/StdInOut.exe": CreateProcess erreur = 2, le système ne peut pas trouver le fichier spécifié
à 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)
à sun.reflect.NativeMethodAcc essorImpl.invoke0 (méthode native)
à sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
à sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
à 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)
à sun.reflect.NativeMethodAccessorImpl.invoke0 (Méthode natif)
à sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
à sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
à 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)
at org.apach e.hadoop.mapred.MapTask.runOldMapper (MapTask.java:354)
à org.apache.hadoop.mapred.MapTask.run (MapTask.java:307)
à org.apache.hadoop.mapred.Child. principal (Child.java:170)
causés par: java.io.IOException: CreateProcess error = 2, le système ne peut pas trouver le fichier spécifié à java.lang.ProcessImpl.create (Méthode natif)
à java.lang .ProcessImpl. (ProcessImpl.java:81)
à java.lang.ProcessImpl.start (ProcessImpl.java:30)
à java.lang.ProcessBuilder.start (ProcessBuilder.java:453)
... 20 plus
Je sais qu'il dit java.io.IOException: Impossible d'exécuter le programme « entrée/StdInOut.exe »: CreateProcess erreur = 2, le système ne peut pas trouver le fichier spécifié mais le fichier est présent à la fois sur le plan local que ainsi que sur HDFS sur le même chemin.
est ici la mise en œuvre de mon propre Mapper:
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);
}
}
}
et je me sers de cette commande pour exécuter mon travail en ssh:
bin/hadoop jar contrib/streaming/hadoop-*-streaming.jar -input input/sample.txt -output output -mapper input/StdInOut.exe -reducer NONE
Toute solution?
Et si j'utiliser l'entrée -file/StdInOut.exe le message d'erreur passe à: ** java.io.IOException: Impossible d'exécuter le programme « C: \ tmp \ Hadoop AliAmjad \ mapred \ Local \ TaskTracker \ jobcache \ job_201010301748_0017 \ attempt_201010301748_0017_m_000000_0 \ work \. \ StdInOut.exe ": erreur CreateProcess = 216, cette version de% 1 n'est pas compatible avec la version de Windows que vous utilisez. Vérifiez les informations système de votre ordinateur pour voir si vous avez besoin d'une version x86 (32 bits) ou x64 (64 bits) du programme, puis contactez l'éditeur de logiciel **. J'ai essayé avec les versions x86 et x64 de mon programme mais pas de chance ... – Ali