2013-03-12 10 views
5

मैं इस पृष्ठ पर निर्देशों का पालन करने की कोशिश की है: http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/Hadoop पर पायथन कोड चल रहा है विफल

$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 

यह

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

का कहना है जब मैं यूआरएल के माध्यम से ब्राउज़ किया था: jobdetails.jsp/

मैंने पाया अपवाद के बहुत

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 

मैं इसे ठीक करने में सक्षम नहीं हूं कृपया मुझे पायथन पीजीएम चलाने में मदद करें।

उत्तर

3

आप link पर ध्यान से निर्देश चेक किया है,

[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 

वहाँ यह स्पष्ट रूप से पता चलता HDFS को mapper.py कॉपी और reducer.py की कोई जरूरत नहीं है, तो आप से फाइल लिंक कर सकते हैं दोनों स्थानीय फाइल सिस्टम: के रूप में/पथ/से/मैपर। मुझे यकीन है कि आप उपर्युक्त त्रुटि से बच सकते हैं।

+1

हां, मैंने तब अपने स्थानीय एफएस –

+0

से अस्वीकार्य किया? क्या वापस करने का कोई कारण है? –

+0

@studhadoop अगर समाधान आपकी समस्या हल करता है, तो आप उत्तर स्वीकार कर सकते हैं। धन्यवाद –

1

ऐसा लगता है समस्या कतार में है।

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

आप कृपया जांच करेगा फ़ाइल /user/root/wordcountpython/mapper.py मौजूद है या नहीं। यदि यह मौजूद है तो उस फ़ाइल की अनुमति क्या है।

उपयोगकर्ता जिसके द्वारा आप चल रहे हैं Hadoop निष्पादित और इस फाइल को पढ़ने की अनुमति है?

+0

वाईएस मैं अपने स्थानीय फ़ाइल से यह जुड़ा हुआ sys.but फिर से काम नहीं कर रहा। –

3

आपको यह देखना होगा कि आप अपने # के बाद एक डॉस शैली नई लाइन की जरूरत नहीं है चाहते हो सकता है! mapper.py के भीतर लाइन। यदि आप करते हैं, तो हैडॉप आपके पायथन दुभाषिया को नहीं ढूंढ पाएगा क्योंकि यह एक अतिरिक्त सीआर देखेंगे। जैसे/usr/local/bin/python^एम के बजाय/usr/local/bin/python जहां^एम सीआर है। अपने मैपर और reducer दोनों पर dos2unix कमांड का प्रयास करें।

+0

मैं कैसे कि नक्शाकार और कम करने –

+0

dos2unix mapper.py –

+0

करने के लिए ... खेद ... बस चलाने 'dos2unix mapper.py' क्या करेंगे, यह सोचते हैं आप स्थापित dos2unix है। और फिर आपके reducer.py के लिए वही। आप पहले और वहां जाने की पुष्टि करने के लिए डॉस नई लाइन के लिए grep कर सकते हैं: [http://stackoverflow.com/questions/73833/how-do-you-search-for-files-containing-dos-line-endings- CRLF-साथ-ग्रेप-अंडर-एल]। साथ ही, यदि यह आपकी समस्या है तो आप यह सोचने पर विचार कर सकते हैं कि आपका संपादक फ़ाइलों को कैसे सहेजता है। जैसे यदि आप एक्लिप्स का उपयोग करते हैं तो डिफॉल्ट डॉस-स्टाइल नई लाइनों के लिए होता है –

संबंधित मुद्दे