2010-12-16 21 views
18

this guide से त्रुटि में विफल रहा, मैंने सफलतापूर्वक नमूना अभ्यास चलाया है। लेकिन मेरे mapreduce काम चल रहा है पर, मैं लॉग फ़ाइलहैडोप स्ट्रीमिंग जॉब पाइथन

java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 2 
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:311) 
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:545) 
at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:132) 
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57) 
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36) 
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307) 
at org.apache.hadoop.mapred.Child.main(Child.java:170) 

Mapper.py

import sys 

i=0 

for line in sys.stdin: 
    i+=1 
    count={} 
    for word in line.strip().split(): 
     count[word]=count.get(word,0)+1 
    for word,weight in count.items(): 
     print '%s\t%s:%s' % (word,str(i),str(weight)) 

Reducer.py

import sys 

keymap={} 
o_tweet="2323" 
id_list=[] 
for line in sys.stdin: 
    tweet,tw=line.strip().split() 
    #print tweet,o_tweet,tweet_id,id_list 
    tweet_id,w=tw.split(':') 
    w=int(w) 
    if tweet.__eq__(o_tweet): 
     for i,wt in id_list: 
      print '%s:%s\t%s' % (tweet_id,i,str(w+wt)) 
     id_list.append((tweet_id,w)) 
    else: 
     id_list=[(tweet_id,w)] 
     o_tweet=tweet 

से निम्न त्रुटि हो रही है
ERROR streaming.StreamJob: Job not Successful!
10/12/16 17:13:38 INFO streaming.StreamJob: killJob...
Streaming Job Failed!

त्रुटि नौकरी चलाने के लिए [संपादित करें] कमांड:

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

इनपुट वाक्यों का कोई यादृच्छिक अनुक्रम है।

धन्यवाद,

उत्तर

19

आपका -mapper और -reducer सिर्फ स्क्रिप्ट नाम होना चाहिए।

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

जब अपनी स्क्रिप्ट जो प्रयास कार्य के रूप में क्रियान्वित करने के सापेक्ष है काम HDFS के भीतर किसी अन्य फ़ोल्डर में है कि कर रहे हैं "।" (एफवाईआई अगर आप किसी अन्य विज्ञापन को देखना चाहते हैं जैसे कि एक लुकअप टेबल, तो आप इसे पायथन में खोल सकते हैं जैसे कि आपकी स्क्रिप्ट एम/आर नौकरी में होने पर आपकी स्क्रिप्ट के समान ही है)

भी सुनिश्चित करें कि आप अपनी स्क्रिप्ट के

#!/usr/bin/env python 

शीर्ष जोड़ने के लिए एक + x mapper.py और chmod एक + x reducer.py

+0

उत्तर के लिए धन्यवाद, लेकिन मुझे अभी भी एक ही त्रुटि मिल रही है। – db42

+8

अपनी पायथन लिपि के शीर्ष पर #!/Usr/bin/env पायथन जोड़ने का प्रयास करें, यह केवल cat data.file | ./mapper.py | sort | .redreder द्वारा कमांड लाइन से निष्पादित करने में सक्षम होना चाहिए। py और यह फ़ाइल के शीर्ष पर "#!/usr/bin/env python" के बिना नहीं होगा –

+0

धन्यवाद जो, यह चाल है। – db42

12

कोशिश chmod है।

या,

-mapper 'python m.py' -reducer 'r.py' 
+0

बढ़िया! शीर्षलेख में "#!/Usr/bin/env python" जोड़ते समय यह मेरी समस्या हल करता है। –

+0

अरे, विम के माध्यम से चिपकाने वाले कोड की प्रतिलिपि '#!' को हटा दी गई और इस मुद्दे को मेरे लिए कारण बना दिया।हेडर जोड़ने के लिए याद दिलाने के लिए धन्यवाद !! – asgs

2

मैं हाल ही में इस त्रुटि का सामना किया, और मेरी समस्या निकला इन अन्य समाधानों के रूप में के रूप में स्पष्ट कुछ (मसा में) होने के लिए:

मैं बस में एक बग था मेरी पायथन कोड। (मेरे मामले में, मैं पायथन v2.7 स्ट्रिंग स्वरूपण का उपयोग कर रहा था जबकि एडब्ल्यूएस ईएमआर क्लस्टर मैं पाइथन v2.6 का उपयोग कर रहा था)।

वास्तविक पायथन त्रुटि खोजने के लिए, जॉब ट्रैकर वेब यूआई (एडब्ल्यूएस ईएमआर के मामले में, एएमआई 2.x के लिए पोर्ट 9100 और एएमआई 3.x के लिए पोर्ट 9026) पर जाएं; असफल मैपर ढूंढें; अपने लॉग खोलो; और stderr आउटपुट पढ़ें।

0

सुनिश्चित करें कि आपकी इनपुट निर्देशिका में केवल सही फ़ाइलें

+0

मुझे यह समस्या है .. मुझे हडूप के बाहर में कोई समस्या नहीं चल रही है ... लेकिन मैंने यहां सुझावों का प्रयास किया और लॉग पर कुछ भी नहीं देखा .. इस मुद्दे को डीबग करने का कोई अन्य तरीका –

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