2013-06-11 49 views
5

Hey Tôi là khá mới với thế giới của Big Data. Tôi đã xem qua hướng dẫn này trên http://musicmachinery.com/2011/09/04/how-to-process-a-million-songs-in-20-minutes/Chạy một công việc sử dụng hadoop streaming và mrjob: PipeMapRed.waitOutputThreads(): tiến trình con thất bại với mã 1

Nó mô tả một cách chi tiết làm thế nào để chạy công việc MapReduce sử dụng mrjob cả trong nước và trên đàn hồi MapReduce.

Vâng, tôi đang cố gắng để chạy trên cluser Hadoop của riêng tôi. Tôi chạy công việc bằng cách sử dụng lệnh sau.

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

Và đây là những gì tôi nhận được:

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 

Lưu ý: Như đã đề cập trong một số diễn đàn khác tôi đã bao gồm

#! /usr/bin/python 

vào đầu của cả hai mật độ file python của tôi. py và track.py. Nó dường như đã làm việc cho hầu hết mọi người nhưng tôi vẫn tiếp tục nhận được các exceprions trên.

Chỉnh sửa: Tôi đã bao gồm định nghĩa của một trong các hàm được sử dụng trong mật độ ban đầu đã được xác định trong tệp khác track.py trong chính passwords.py. Công việc đã chạy thành công. Nhưng nó sẽ thực sự hữu ích nếu ai đó biết tại sao điều này lại xảy ra.

Trả lời

8

Lỗi mã 1 là một lỗi chung cho Hadoop Streaming. Bạn có thể nhận được mã lỗi này vì hai lý do chính:

  • Mapper của bạn và các kịch bản giảm tốc không phải là thực thi (bao gồm #/usr/bin/python vào đầu của kịch bản!).

  • chương trình Python của bạn chỉ đơn giản là viết sai - bạn có thể có một lỗi cú pháp hoặc lỗi logic.

Thật không may, mã lỗi 1 không cung cấp cho bạn bất kỳ chi tiết nào để xem chính xác điều gì sai với chương trình Python của bạn.

tôi đã bị mắc kẹt với mã lỗi 1 trong một thời gian bản thân mình, và cách tôi figured it out là chỉ cần chạy script Mapper của tôi như là một chương trình độc lập python: python mapper.py

Sau khi thực hiện điều này, tôi có một Python thường xuyên lỗi nói với tôi rằng tôi chỉ đơn giản là đưa ra một hàm sai đối số. Tôi đã sửa lỗi cú pháp của mình và mọi thứ đã hoạt động sau đó. Vì vậy, nếu có thể, tôi sẽ chạy tập lệnh Mapper hoặc Reducer của bạn dưới dạng chương trình Python độc lập để xem liệu có cung cấp cho bạn thông tin chi tiết về lý do lỗi của bạn hay không.

+1

Tôi cũng gặp lỗi trong khi chạy tập lệnh python trên cụm hadoop streaming, bạn có thể xem câu hỏi của tôi http://stackoverflow.com/questions/29791437/python-hadoop-streaming-error-error-streaming- streamjob-job-not-success-a Tôi mắc kẹt vì lỗi.Bạn có thể đề xuất whats going sai – MegaBytes

+0

Đối với trường hợp của tôi, tôi không thể đính kèm các biến bên ngoài như '--mapper 'python exec.py argv" '... Có vẻ như Tôi không thể vượt qua các biến bên ngoài ... –

1

Tôi đã cùng một lỗi, 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. Đây là chủ yếu là do một hadoop không thể truy cập tập tin đầu vào của bạn, hoặc có thể bạn có một cái gì đó trong đầu vào của bạn mà là nhiều hơn cần thiết, hoặc một cái gì đó mất tích. Vì vậy, hãy rất cẩn thận với thư mục nhập và các tệp bạn có trong đó. Tôi sẽ nói, chỉ đặt chính xác các tệp đầu vào được yêu cầu trong thư mục nhập cho nhiệm vụ và xóa phần còn lại của chúng.

  2. Cũng đảm bảo tệp bản đồ và trình giảm tốc của bạn có thể thực thi được. chmod +x mapper.pychmod +x reducer.py

  3. Chạy mapper file python giảm sử dụng cat chỉ sử dụng ánh xạ: cat join2_gen*.txt | ./mapper.py | sort sử dụng giảm: cat join2_gen*.txt | ./mapper.py | sort | ./reducer.py Lý do để chạy chúng bằng mèo là vì Nếu tập tin đầu vào của bạn có bất kỳ lỗi bạn có thể xóa trước khi bạn chạy trên cụm Hadoop. Đôi khi các công việc trên bản đồ/giảm bớt không thể tìm thấy lỗi python !!

1

Tôi gặp phải vấn đề tương tự khi chạy, bản đồ trình giảm tốc và trình giảm tốc của tôi không thực thi được.

Thêm #! /usr/bin/python ở đầu tệp của tôi đã khắc phục sự cố.

0

Lý do khác, chẳng hạn như bạn gặp lỗi trong tập lệnh trình bao để chạy mapper.pyreducer.py. Dưới đây là các đề xuất của tôi:

Trước tiên, bạn nên cố gắng chạy bạn mapper.pyreducer.py trong môi trường địa phương.

Tiếp theo, bạn có thể thử theo dõi công việc Mapreduce của bạn trên url được in trong nhật ký stdout, như sau: 16: 01: 56 INFO mapreduce.Job: Địa chỉ để theo dõi công việc: http://xxxxxx:8088/proxy/application_xxx/ "có thông tin lỗi chi tiết. Hy vọng sự trợ giúp này!

Các vấn đề liên quan