2014-12-12 2 views
0

저는 Hadoop streaming with Python을 사용하는 초보자입니다. 나는 대부분의 참고 문헌에서 설명 된 단어 수의 예제를 성공적으로 실행할 수있었습니다. 그러나 필자가 작성한 작은 파이썬 스크립트로 시작했을 때 코드의 기능이 아무 것도 아니지만 오류를 표시합니다.Hadoop Streaming Command Failed Job이 실패했습니다.

명령의 실행에 에러 부분이었다

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
14/12/13 01:47:31 INFO mapred.LocalJobRunner: map task executor complete. 
14/12/13 01:47:31 WARN mapred.LocalJobRunner: job_local174189774_0001 
java.lang.Exception: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 2 
    at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462) 
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522) 
Caused by: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 2 
    at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:320) 
    at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:533) 
    at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 
    at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:430) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342) 
    at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
14/12/13 01:47:32 INFO mapreduce.Job: Job job_local174189774_0001 failed with state FAILED due to: NA 
14/12/13 01:47:32 INFO mapreduce.Job: Counters: 0 
14/12/13 01:47:32 ERROR streaming.StreamJob: Job not Successful! 
Streaming Command Failed! 

map.py 파일은 다음과 같다 : 다음과 같이

import sys 
    for line in sys.stdin: 
     line = line.strip() 
     review_lines = line.split('\n') 
     for r in review_lines: 
      review = r.split('\t') 
      print '%s\t%s' % (review[0], review[1]) 

red.py 파일이다

import sys 
for line in sys.stdin: 
    line = line.strip() 
    word = line.split('\t') 
    print '%s\t%d' %(word[0], int(word[1]) % 2) 

입력 한 내용은 다음과 같습니다. (input_file.txt)

R1  1 
R2  5 
R3  3 
R4  2 

프로세스를 실행하는 데 사용되는 명령 617,451,515,했다 :

hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.4.0.jar -file /home/hduser/map.py -mapper /home/hduser/map.py -file /home/hduser/red.py -reducer /home/hduser/red.py -input /user/hduser/input_file.txt -output /user/hduser/output_file.txt 
+0

이 작업은 쉘에서 가능합니까? 'cat input.txt | map.py | red.py'? –

+0

@ReutSharabani 고양이처럼 완벽하게 실행됩니다. input_file.txt | 파이썬 map.py | python red.py – chakshu

답변

3

당신은 스크립트의 상단이 퍼팅 시도 할 수 있습니다 :

#!/usr/bin/env python 
+0

다른 질문에서도 응답을 보았지만 추가 한 적이 있지만 헛된 시도였습니다. – chakshu

+0

질문을 현재 파이썬 파일의 정확한 내용으로 업데이트 할 수 있습니까? Hadoop은 스트리밍 응용 프로그램의 정확한 오류를 알려주지는 않지만 실패한 작업을 클릭하고 그 안에 '출력'을 표시하여 작업 추적기 웹 페이지를 통해이를 파헤 칠 수 있습니다. – Nonnib

0
#!/usr/bin/python 

나를 위해 일했다.