2013-08-22 3 views
1

시스템을 테스트하고 다음 명령을 사용하기 위해 RHadoop의 샘플 스크립트를 실행 중입니다.Hadoop streaming failed in R

library(rmr2) 
library(rhdfs) 
Sys.setenv(HADOOP_HOME="/usr/bin/hadoop") 
Sys.setenv(HADOOP_CMD="/usr/bin/hadoop") 
Sys.setenv(HADOOP_STREAMING="/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/hadoop-mapreduce/hadoop-streaming.jar") 
hdfs.init() 
ints = to.dfs(1:100) 
calc = mapreduce(input = ints, map = function(k, v) cbind(v, 2*v)) 

하지만 아래와 같은 오류가 발생합니다.

>Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.streaming.AutoInputFormat not found 
     at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1587) 
     at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1611) 
13/08/21 18:30:25 INFO mapred.JobClient: Job complete: job_201308191923_0307 
13/08/21 18:30:25 INFO mapred.JobClient: Counters: 7 
13/08/21 18:30:25 INFO mapred.JobClient: Job Counters 
13/08/21 18:30:25 INFO mapred.JobClient:  Failed map tasks=1 
13/08/21 18:30:25 INFO mapred.JobClient:  Launched map tasks=8 
13/08/21 18:30:25 INFO mapred.JobClient:  Data-local map tasks=8 
13/08/21 18:30:25 INFO mapred.JobClient:  Total time spent by all maps in occupied slots (ms)=46647 
13/08/21 18:30:25 INFO mapred.JobClient:  Total time spent by all reduces in occupied slots (ms)=0 
13/08/21 18:30:25 INFO mapred.JobClient:  Total time spent by all maps waiting after reserving slots (ms)=0 
13/08/21 18:30:25 INFO mapred.JobClient:  Total time spent by all reduces waiting after reserving slots (ms)=0 
13/08/21 18:30:25 ERROR streaming.StreamJob: Job not Successful! 
Streaming Command Failed! 
Error in mr(map = map, reduce = reduce, combine = combine, in.folder = if (is.list(input)) { : 
    hadoop streaming failed with error code 1 

디렉토리해야 여기

답변

2

HADOOP_HOME 잘못 될 것인가에 대한 모든 리드. HADOOP_CMD는 프로그램이어야합니다. 그래서 그들은 같은 일로 설정 되었기 때문에, 바로 그곳에서 잘못되었습니다. 그러나 HADOOP_CMD는 근본 원인이 아니어야하므로 HADOOP_HOME을 대체해야합니다. 그래서 유일한 옵션은 디버깅입니다. 디버깅 가이드를 읽었 으면 stderr을 파고 들었을 것이며 이미 더 많이 알 것입니다. 콘솔 출력만으로는 아무 일도 할 수 없습니다.

+0

HADOOP_CMD 및 HADOOP_HOME에 대한 의견을 보내 주셔서 감사합니다. 나는 몇몇 페이지를 훑어 보았지만 "stderr"은 여전히 ​​나의 도달 거리에서 멀다. 가능한 한 모든 아기 단계. – LonelySoul

+0

가장 간단한 방법은 웹 UI를 사용하는 것입니다. 나는 콘솔, 당신은 추적 URL을보고, 거기를 탐색 할 수 있습니다. 정확한 클릭 순서를 설명 할 수는 없지만 실패한 작업을 찾으십시오. 특히 작업을 클릭하고 화면의 맨 오른쪽에있는 로그에 대한 링크를 찾으십시오. 이것은 일반적인 Hadoop 항목이므로 RHadoop과 독립적 인 Hadoop 소개 자료 중에서 웹 UI 둘러보기를 찾을 수 있습니다. – piccolbo

+0

그 방향에 대해 감사드립니다. 나는 stderr와 stdout이 모두 비어 있음을 발견했다. * .jar 파일을 변경해야한다는 의미입니까? 나는 한 사람에게서 그 링크를 얻었습니다. – LonelySoul