2013-06-11 6 views
5

के साथ उपप्रोसेस विफल रहा अरे मैं बिग डेटा की दुनिया के लिए बिल्कुल नया हूं। मैं http://musicmachinery.com/2011/09/04/how-to-process-a-million-songs-in-20-minutes/हैडऑप स्ट्रीमिंग और mrjob का उपयोग करके नौकरी चला रहा है: PipeMapRed.waitOutputThreads(): कोड 1

यह कैसे mrjob का उपयोग कर दोनों स्थानीय और लचीला मानचित्र पर कम MapReduce काम चलाने के लिए की विस्तार से वर्णन पर इस ट्यूटोरियल बारे में जाना।

ठीक है, मैं इसे अपने हीडोप क्लूसर पर चलाने की कोशिश कर रहा हूं। मैं निम्नलिखित कमांड का उपयोग कर नौकरी चला गया।

HADOOP: Running job: job_1369345811890_0245 
HADOOP: Job job_1369345811890_0245 running in uber mode : false 
HADOOP: map 0% reduce 0% 
HADOOP: Task Id : attempt_1369345811890_0245_m_000000_0, Status : FAILED 
HADOOP: Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:320) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:533) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 
HADOOP:   at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 
HADOOP:   at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:428) 
HADOOP:   at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340) 
HADOOP:   at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:157) 
HADOOP:   at java.security.AccessController.doPrivileged(Native Method) 
HADOOP:   at javax.security.auth.Subject.doAs(Subject.java:415) 
HADOOP:   at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408) 
HADOOP:   at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:152) 
HADOOP: 
HADOOP: Task Id : attempt_1369345811890_0245_m_000001_0, Status : FAILED 
HADOOP: Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:320) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:533) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 
HADOOP:   at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 
HADOOP:   at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:428) 
HADOOP:   at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340) 
HADOOP:   at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:157) 
HADOOP:   at java.security.AccessController.doPrivileged(Native Method) 
HADOOP:   at javax.security.auth.Subject.doAs(Subject.java:415) 
HADOOP:   at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408) 
HADOOP:   at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:152) 
HADOOP: 
HADOOP: Task Id : attempt_1369345811890_0245_m_000000_1, Status : FAILED 
HADOOP: Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:320) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:533) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 
HADOOP:   at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 
HADOOP:   at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:428) 
HADOOP:   at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340) 
HADOOP:   at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:157) 
HADOOP:   at java.security.AccessController.doPrivileged(Native Method) 
HADOOP:   at javax.security.auth.Subject.doAs(Subject.java:415) 
HADOOP:   at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408) 
HADOOP:   at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:152) 
HADOOP: 
HADOOP: Container killed by the ApplicationMaster. 
HADOOP: 
HADOOP: 
HADOOP: Task Id : attempt_1369345811890_0245_m_000001_1, Status : FAILED 
HADOOP: Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:320) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:533) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 
HADOOP:   at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 
HADOOP:   at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:428) 
HADOOP:   at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340) 
HADOOP:   at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:157) 
HADOOP:   at java.security.AccessController.doPrivileged(Native Method) 
HADOOP:   at javax.security.auth.Subject.doAs(Subject.java:415) 
HADOOP:   at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408) 
HADOOP:   at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:152) 
HADOOP: 
HADOOP: Task Id : attempt_1369345811890_0245_m_000000_2, Status : FAILED 
HADOOP: Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:320) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:533) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 
HADOOP:   at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 
HADOOP:   at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:428) 
HADOOP:   at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340) 
HADOOP:   at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:157) 
HADOOP:   at java.security.AccessController.doPrivileged(Native Method) 
HADOOP:   at javax.security.auth.Subject.doAs(Subject.java:415) 
HADOOP:   at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408) 
HADOOP:   at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:152) 
HADOOP: 
HADOOP: Task Id : attempt_1369345811890_0245_m_000001_2, Status : FAILED 
HADOOP: Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:320) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:533) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 
HADOOP:   at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 
HADOOP:   at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 
HADOOP:   at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:428) 
HADOOP:   at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340) 
HADOOP:   at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:157) 
HADOOP:   at java.security.AccessController.doPrivileged(Native Method) 
HADOOP:   at javax.security.auth.Subject.doAs(Subject.java:415) 
HADOOP:   at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408) 
HADOOP:   at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:152) 
HADOOP: 
HADOOP: map 100% reduce 0% 
HADOOP: Job job_1369345811890_0245 failed with state FAILED due to: Task failed task_1369345811890_0245_m_000001 
HADOOP: Job failed as tasks failed. failedMaps:1 failedReduces:0 
HADOOP: 
HADOOP: Counters: 6 
HADOOP:   Job Counters 
HADOOP:     Failed map tasks=7 
HADOOP:     Launched map tasks=8 
HADOOP:     Other local map tasks=6 
HADOOP:     Data-local map tasks=2 
HADOOP:     Total time spent by all maps in occupied slots (ms)=32379 
HADOOP:     Total time spent by all reduces in occupied slots (ms)=0 
HADOOP: Job not Successful! 
HADOOP: Streaming Command Failed! 
STDOUT: packageJobJar: [] [/usr/lib/hadoop-mapreduce/hadoop-streaming-2.0.0-cdh4.2.1.jar] /tmp/streamjob3272348678857116023.jar tmpDir=null 
Traceback (most recent call last): 
    File "density.py", line 34, in <module> 
    MRDensity.run() 
    File "/usr/lib/python2.6/site-packages/mrjob-0.2.4-py2.6.egg/mrjob/job.py", line 344, in run 
    mr_job.run_job() 
    File "/usr/lib/python2.6/site-packages/mrjob-0.2.4-py2.6.egg/mrjob/job.py", line 381, in run_job 
    runner.run() 
    File "/usr/lib/python2.6/site-packages/mrjob-0.2.4-py2.6.egg/mrjob/runner.py", line 316, in run 
    self._run() 
    File "/usr/lib/python2.6/site-packages/mrjob-0.2.4-py2.6.egg/mrjob/hadoop.py", line 175, in _run 
    self._run_job_in_hadoop() 
    File "/usr/lib/python2.6/site-packages/mrjob-0.2.4-py2.6.egg/mrjob/hadoop.py", line 325, in _run_job_in_hadoop 
    raise CalledProcessError(step_proc.returncode, streaming_args) 
subprocess.CalledProcessError: Command '['/usr/bin/hadoop', 'jar', '/usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.0.0-mr1-cdh4.2.1.jar', '-cmdenv', 'PYTHONPATH=mrjob.tar.gz', '-input', 'hdfs:///user/E824259/tmp/mrjob/density.E824259.20130611.053850.343441/input', '-output', 'hdfs:///user/E824259/tmp/mrjob/density.E824259.20130611.053850.343441/output', '-cacheFile', 'hdfs:///user/E824259/tmp/mrjob/density.E824259.20130611.053850.343441/files/density.py#density.py', '-cacheArchive', 'hdfs:///user/E824259/tmp/mrjob/density.E824259.20130611.053850.343441/files/mrjob.tar.gz#mrjob.tar.gz', '-mapper', 'python density.py --step-num=0 --mapper --protocol json --output-protocol json --input-protocol raw_value', '-jobconf', 'mapred.reduce.tasks=0']' returned non-zero exit status 1 

नोट::

python density.py tiny.dat -r hadoop --hadoop-bin /usr/bin/hadoop > outputmusic 

और यह मैं क्या मिलता है के रूप में कुछ अन्य मंचों में सुझाव दिया कि मैं अपने दोनों अजगर फ़ाइलें घनत्व की शुरुआत में

#! /usr/bin/python 

शामिल किया है। पाई और track.py। ऐसा लगता है कि ज्यादातर लोगों के लिए काम किया है लेकिन मैं अभी भी उपरोक्त बहिष्कार प्राप्त करना जारी रखता हूं।

संपादित करें: मैंने मूल density.py में उपयोग किए जाने वाले कार्यों में से किसी एक की परिभाषा को शामिल किया था जो कि density.py में किसी अन्य फ़ाइल track.py में निश्चित था। नौकरी सफलतापूर्वक भाग गया। लेकिन अगर कोई जानता है कि यह क्यों हो रहा है तो यह वास्तव में उपयोगी होगा।

उत्तर

8

त्रुटि कोड 1 हैडोप स्ट्रीमिंग के लिए एक सामान्य त्रुटि है। आप दो मुख्य कारणों से इस त्रुटि कोड प्राप्त कर सकते हैं:

  • आपका मैपर और प्रसारण स्क्रिप्ट निष्पादन योग्य नहीं हैं (# शामिल/usr/bin/लिपि की शुरुआत में अजगर!)।

  • आपका पायथन प्रोग्राम बस गलत लिखा गया है - आपके पास वाक्यविन्यास त्रुटि या तार्किक बग हो सकती है।

दुर्भाग्यवश, त्रुटि कोड 1 आपको यह देखने के लिए कोई विवरण नहीं देता है कि आपके पायथन प्रोग्राम में क्या गलत है।

मैं जबकि अपने आप को एक के लिए त्रुटि कोड 1 के साथ फंस गया था, और जिस तरह से मैं इसे समझ से बाहर बस एक स्टैंडअलोन अजगर कार्यक्रम के रूप में मेरे मैपर स्क्रिप्ट चलाने के लिए किया गया था: python mapper.py

यह करने के बाद, मैं एक नियमित अजगर मिला त्रुटि जो मुझे बताती है कि मैं बस एक गलत प्रकार का तर्क दे रहा था। मैंने अपनी वाक्यविन्यास त्रुटि तय की, और उसके बाद सब कुछ काम किया। तो यदि संभव हो, तो मैं आपके मैपर या रेड्यूसर स्क्रिप्ट को एक स्टैंडअलोन पायथन प्रोग्राम के रूप में चलाऊंगा ताकि यह देखने के लिए कि क्या आपको आपकी त्रुटि के तर्क पर कोई अंतर्दृष्टि मिलती है।

+1

क्लस्टर हैडऑप स्ट्रीमिंग पर पाइथन स्क्रिप्ट चलाने के दौरान मुझे भी त्रुटि मिल रही है, क्या आप मेरा प्रश्न देख सकते हैं http://stackoverflow.com/questions/29791437/python-hadoop- स्ट्रीमिंग-error-error- स्ट्रीमिंग- streamjob-job-not-successful-a त्रुटि के कारण मैं अटक गया। क्या आप सुझाव दे सकते हैं कि क्या गलत हो रहा है – MegaBytes

+0

मेरे मामले के लिए, मैं बाहरी चर जैसे '--mapper "python exec.py argv" 'ऐसा नहीं लगा सकता मैं बाहरी चर पारित नहीं कर सकता ... –

1

मैं एक ही त्रुटि मिली, sub-process failed with code 1

[[email protected] ~]$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar -input /user/cloudera/input -output /user/cloudera/output_join -mapper /home/cloudera/join1_mapper.py -reducer /home/cloudera/join1_reducer.py 
  1. यह मुख्य रूप से एक Hadoop अपने इनपुट फ़ाइलों तक पहुँचने में असमर्थ की वजह से है, या हो सकता है आप अपने इनपुट में जो कुछ आवश्यकता से अधिक है, या कुछ याद आ रही है। तो, इनपुट निर्देशिका और आपके पास मौजूद फ़ाइलों के साथ बहुत सावधान रहें। मैं कहूंगा, असाइनमेंट के लिए इनपुट निर्देशिका में केवल आवश्यक इनपुट फाइलें रखें और बाकी को हटा दें।

  2. यह भी सुनिश्चित करें कि आपके मैपर और रेड्यूसर फ़ाइलें निष्पादन योग्य हैं। chmod +x mapper.py और chmod +x reducer.py

  3. केवल नक्शाकार का उपयोग कर cat का उपयोग कर कम करने अजगर फ़ाइल के नक्शाकार चलाएँ: cat join2_gen*.txt | ./mapper.py | sort कम करने का उपयोग कर: cat join2_gen*.txt | ./mapper.py | sort | ./reducer.py बिल्ली का उपयोग कर उन्हें चलाने के लिए कारण नहीं है अपने इनपुट फ़ाइलें किसी भी त्रुटि है, तो है क्योंकि आप निकाल सकते हैं हडोप क्लस्टर पर चलाने से पहले उन्हें। कभी-कभी नौकरियों को कम/कम करने में पाइथन त्रुटियां नहीं मिलती हैं !!

1

मुझे चलने पर एक ही समस्या का सामना करना पड़ा, मेरे मैपर और रेड्यूसर स्क्रिप्ट निष्पादन योग्य नहीं थे।

मेरी फ़ाइलों के शीर्ष पर #! /usr/bin/python जोड़ना समस्या को हल करता है।

0

एक अन्य कारण, जैसे कि mapper.py और reducer.py चलाने के लिए आपको अपनी खोल स्क्रिप्ट में कोई त्रुटि है। यहां मेरे सुझाव दिए गए हैं:

सबसे पहले आपको स्थानीय वातावरण में mapper.py और reducer.py चलाने का प्रयास करना चाहिए।

अगला आप stdout लॉग में मुद्रित अपने यूआरएल पर अपने मैप्रिडस नौकरी को ट्रैक करने का प्रयास कर सकते हैं, जैसे: 16: 01: 56 INFO mapreduce.Job: नौकरी को ट्रैक करने के लिए यूआरएल: http://xxxxxx:8088/proxy/application_xxx/ "जिसमें विस्तृत त्रुटि जानकारी है। उम्मीद है कि यह मदद!

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