2013-04-18 3 views
4

나는 우분투 12.04에서 단일 노드 환경에서 hadoop wordcount 예제를 실행하고 있습니다. 이 같은 실시 예를 실행 -hadoop wordcount 예제를 실행할 수 없습니까?

[email protected]:~/hadoop$ hadoop jar hadoop-examples-1.0.4.jar wordcount  
/home/hadoop/gutenberg/ /home/hadoop/gutenberg-output 

난 위치 아래에서 입력 파일이 : 출력 파일

/home/hadoop/gutenberg 

및 위치 것은 :

/home/hadoop/gutenberg-output 

나 단어 수를 실행할 때 프로그램에 다음 오류가 발생합니다. -

13/04/18 06:02:10 INFO mapred.JobClient: Cleaning up the staging area  
hdfs://localhost:54310/home/hadoop/tmp/mapred/staging/hadoop/.staging/job_201304180554_0001  
13/04/18 06:02:10 ERROR security.UserGroupInformation: PriviledgedActionException  
as:hadoop cause:org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory 
/home/hadoop/gutenberg-output already exists 
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory 
/home/hadoop/gutenberg-output already exists at 

org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.checkOutputSpecs(FileOutputFormat.j 
ava:137) at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:887) at 
org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850) at 
java.security.AccessController.doPrivileged(Native Method) at 
javax.security.auth.Subject.doAs(Subject.java:416) at 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) at 
org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850) at 
org.apache.hadoop.mapreduce.Job.submit(Job.java:500) at 
org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530) at 
org.apache.hadoop.examples.WordCount.main(WordCount.java:67) at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) at 
org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68) 
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139) at 
org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:64) at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) at 
org.apache.hadoop.util.RunJar.main(RunJar.java:156) [email protected]:~/hadoop$ bin/stop- 
all.sh Warning: $HADOOP_HOME is deprecated. stopping jobtracker localhost: stopping 
tasktracker stopping namenode localhost: stopping datanode localhost: stopping 
secondarynamenode [email protected]:~/hadoop$ 

답변

9

이미있는 출력 파일을 삭제하거나 다른 파일로 출력하십시오.

데이브 (그리고 예외)처럼

+0

예 출력 파일이 이미 존재합니다. 다른 파일로 성공적으로 실행되었지만 출력 파일이 주어진 위치에 없습니다. –

+0

@Sandeepvashisth 파일을 어떻게보고 계십니까? 뭐, 정확한 명령이야? –

+0

다음 명령으로 디렉토리를 볼 수 있습니다 : - bin/hadoop dfs -ls/home/hadoop하지만 탐색기에서는 볼 수 없습니다. –

2

(나는. 당신이 생각 어떤 오류 메시지의 다른 해석 좀 궁금 해서요)했다, 당신의 출력 디렉토리가 이미 존재합니다. 다음을 사용하여 다른 디렉토리로 출력하거나 기존 파일을 제거해야합니다.

hadoop fs -rmr /home/hadoop/gutenberg-output 
1

'tmp'폴더가 있는지 여부를 확인하십시오. 당신은 출력 폴더 또는 'tmp에'

하둡 FS의 -rmr/tmp를

1

(더 실행 활성 작업을 고려하지 않음)을 모두 삭제 참조하면

하둡 FS가/

을 -ls 경우 ' 자신의 .jar을 만들었습니다 그것을 실행하려고,주의 지불 :

다음이 작업을 실행하려면

를, 다음과 같이 작성했습니다했다 당신이 당신의 출력로 입력으로 arg[0]arg[1]을 설정 한 것을 볼 수 있습니다 당신이 당신의 드라이버 코드에 대해 자세히 살펴 경우

hadoop jar <jar-path> <package-path> <input-in-hdfs-path> <output-in-hdfs-path> 

하지만 ... 나는 그것을 보여주지 :

FileInputFormart.addInputPath(conf, new Path(args[0])); 
FileOutFormart.setOutputPath(conf, new Path(args[1])); 

그러나 하둡은 <input-in-hdfs-path> 대신 그래서

<output-in-hdfs-path>의로 arg[0] 대신 <input-in-hdfs-path> 및 인수의 <package-path>로 [1], 그것이 작동되도록하기 위하여 사용한다 취하고있다 :

FileInputFormart.addInputPath(conf, new Path(args[1])); 
FileOutFormart.setOutputPath(conf, new Path(args[2])); 

arg[1]arg[2]으로 올바른 정보를 얻을 수 있습니다. :) 도움이되기를 바랍니다. 건배.

관련 문제