2015-02-03 2 views
1

저는 Hadoop을 처음 접했고 2.x 버전에서 로컬 Windows 7 64 비트 시스템에서 Hadoop을 사용해 볼 수 있음을 알게되었습니다.
hadoop 2.6.0을 설치하고 cygwin을 설치했습니다.
bin/hadoop 버전을 실행할 수 있지만 jar 명령을 실행하는 동안 아래 오류가 나타납니다.
참고 : hadoop-common-2.2.0.jar에서 bin에 winutils.jar를 넣었습니다.
도와주세요. 이 오류를 제거 할 수 없습니다. 입력 및 출력 매개 변수도 입력했지만 여전히 실패합니다.Hadoop 2.6.0을 사용하여 Windows에서 wordcount Hadoop 예제 실행

$ bin/hadoop jar /Hadoop/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount 
15/02/03 12:40:45 ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path 
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. 
at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:355) 
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:370) 
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:363) 
at org.apache.hadoop.util.GenericOptionsParser.preProcessForWindows 
(GenericOptionsParser.java:438) 
at org.apache.hadoop.util.GenericOptionsParser.parseGeneralOptions 
(GenericOptionsParser.java:484) 
at org.apache.hadoop.util.GenericOptionsParser.<init> 
(GenericOptionsParser.java:170) 
at org.apache.hadoop.util.GenericOptionsParser.<init> 
(GenericOptionsParser.java:153) 
at org.apache.hadoop.examples.WordCount.main(WordCount.java:70) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke 
(ProgramDriver.java:71) 
at org.apache.hadoop.util.ProgramDriver.run(ProgramDriver.java:144) 
at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:74) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 
at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 
Usage: wordcount <in> [<in>...] <out> 

은 나뿐만 아니라 아래의 명령을 실행할 수 있습니다 :

$ bin/hadoop jar /Hadoop/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 

답변

0

그것은 문제가 이전에 사용. 그러나 jar 파일을 통해 프로그램을 실행할 수 있다면 다른 오류가있을 수 있습니다. Java 코드를 사용하여 동일한 작업을 수행하는 경우 새 예외가 발생하는 코드를 제거하도록 jar를 편집 할 수 있습니다.

bin 디렉토리에 winutils.exe 및 hadoop.dll이 포함되어 있는지 확인하십시오.

존재하지 않으면 다른 사람이 비슷한 문제에 직면 했어야하며 파일을 보관했을 가능성이 있습니다. 이 파일은 Hadoop이 OS의 소스 코드로 빌드 될 때 생성됩니다.

+0

안녕하세요, winutils.exe .hadoop.dll이 존재하지 않아 수동으로 복사했는데 복사했지만 여전히 같은 오류가 발생했습니다. null 위치에서 null \ bin \ winutils.exe를 찾았으므로 HADOOP_HOME을 somehwere로 설정해야합니까? –

+0

jar가 정상적으로 실행 중이므로 그렇게해서는 안됩니다. HADOOP_HOME을 HADOOP 설치 디렉토리로 설정하십시오. – Harman

+0

또한 winutils는 어디에서 복사 했습니까? – Harman

0

hadoop 2.6.0 및 이전 버전의 hadoop winutils가 설치되어있는 것 같습니다. 현재 hadoop 버전의 hadoop winutils를 설치해야합니다. 이 github repo에서 winutils를 다운로드하십시오. https://github.com/steveloughran/winutils/tree/master/hadoop-2.6.0/bin 마지막으로 bin 디렉토리를 winutils bin 디렉토리로 바꾸십시오!

관련 문제