2010-10-30 5 views
2

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?

+0

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

Répondre

2

L'erreur était en fait le chemin relatif du mappeur.

+0

vous avez mon upvote. Voudriez-vous entrer dans un peu plus de détails sur où le cartographe cherchait le fichier? –