2013-03-12 26 views
5

Başarısız: http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/Hadoop üzerinde Python Kodunu Running ben bu sayfadaki talimatları takip etmeye çalıştık

$bin/hadoop jar contrib/streaming/hadoop-streaming-1.0.4.jar -input /user/root/wordcountpythontxt -output /user/root/wordcountpythontxt-output -mapper /user/root/wordcountpython/mapper.py -reducer /user/root/wordcountpython/reducer.py -file /user/root/mapper.py -file /user/root/reducer.py 

O i url aracılığıyla göz yaparken

File: /user/root/mapper.py does not exist, or is not readable. 
Streaming Command Fail 

diyor ki: jobdetails.jsp/

i istisna sürü

java.lang.RuntimeException: Error in configuring object 
    at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93) 
    at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64) 
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117) 
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:432) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372) 
    at org.apache.hadoop.mapred.Child$4.run(Child.java:255) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:396) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 
    at org.apache.hadoop.mapred.Child.main(Child.java:249) 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    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) 
    at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88) 
    ... 9 more 
Caused by: java.lang.RuntimeException: Error in configuring object 
    at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93) 
    at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64) 
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117) 
    at org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:34) 
    ... 14 more 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    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) 
    at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88) 
    ... 17 more 
Caused by: java.lang.RuntimeException: configuration exception 
    at org.apache.hadoop.streaming.PipeMapRed.configure(PipeMapRed.java:230) 
    at org.apache.hadoop.streaming.PipeMapper.configure(PipeMapper.java:66) 
    ... 22 more 
Caused by: java.io.IOException: Cannot run program "/user/root/wordcountpython/mapper.py": error=2, No such file or directory 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) 
    at org.apache.hadoop.streaming.PipeMapRed.configure(PipeMapRed.java:214) 
    ... 23 more 
Caused by: java.io.IOException: error=2, No such file or directory 
    at java.lang.UNIXProcess.forkAndExec(Native Method) 
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:53) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:91) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:453) 
    ... 24 more 
bulundu

Bunu düzeltemiyorum pls python pgm'yi çalıştırmama yardım et.

cevap

3

Eğer link üzerine talimatları dikkatlice işaretli ise,

orada
[email protected]:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-*streaming*.jar -file /home/hduser/mapper.py -mapper /home/hduser/mapper.py -file /home/hduser/reducer.py -reducer /home/hduser/reducer.py -input /user/hduser/gutenberg/* -output /user/hduser/gutenberg-output 

açıkça HDF'ler için mapper.py kopyalayıp reducer.py gerek yoktur gösterir, aralarından iki dosyayı bağlayabilirsiniz yerel dosya sistemi:/yol/için/mapper. Yukarıdaki hatayı önleyebileceğinizden eminim.

+1

Evet, yerel fs –

+0

kabul edilmedim mi? geri dönmek için bir sebep var mı? –

+0

@studhadoop Çözüm sorununuzu çözerse, cevabı kabul edebilirsiniz. Teşekkürler –

1

Sorun görünüyor.

Caused by: java.io.IOException: Cannot run program "/user/root/wordcountpython/mapper.py": error=2, No such file or directory 

Lütfen /user/root/wordcountpython/mapper.py numaralı dosyayı kontrol edin veya vermeyiniz. Varsa, o dosyanın izni nedir?

Kullanmakta olduğunuz kullanıcı hadoop bu dosyayı yürütme ve okuma iznine sahip mi?

+0

Yeniden yerel dosyadan sys.but bağladıktan sonra tekrar çalışmıyor. –

3

# numaranızdan sonra dos tarzı yeni bir satır olmadığınızı kontrol etmek isteyebilirsiniz! mapper.py içinde satır. Bunu yaparsanız, eko bir CR göreceğinden, pdofon yorumlayıcınızı bulamıyor olabilir. Örneğin./usr/local/bin/python^M yerine/usr/local/bin/python yerine^M CR'dir. Eşleştiriciniz ve redüktörünüzde dos2unix komutunu deneyin.

+0

bunu mappe ve redüktör –

+0

dos2unix mapper.py –

+0

için yapacağım ... pardon ... sadece dos2unix'in yüklü olduğu varsayılarak 'dos2unix mapper.py' çalıştırın. Ve sonra redüktörünüz için de aynı. Daha önce orada olduğunu teyit etmek için dos yeni hat için grep olabilir ve daha sonra gitti: [http://stackoverflow.com/questions/73833/how-do-you-search-for-files-containing-dos-line-endings- crlf-ile-grep'in-under-il]. Ayrıca, eğer bu sizin sorununuz ise, editörünüzün dosyaları nasıl kaydettiğini değiştirmeyi düşünebilirsiniz. Örneğin. Eclipse kullanırsanız, varsayılan, dos tarzı yeni satırlar içindir –