2014-10-22 1 views
2

Windows 7, Java 8, Maven 및 Eclipse가 있습니다. Maven 프로젝트를 만들고 here과 거의 동일한 코드를 사용했습니다.Cygwin없이 Windows의 로컬 모드에서 Hadoop 작업 (WordCount 샘플과 같은)을 실행할 수 있습니까?

단순한 "단어 수"샘플입니다. (WordCountDriverApp.java:29를)

Exception in thread "main" java.lang.NullPointerException at 
java.lang.ProcessBuilder.start(ProcessBuilder.java:1012) at 
org.apache.hadoop.util.Shell.runCommand(Shell.java:404)  at 
org.apache.hadoop.util.Shell.run(Shell.java:379) at 
org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:589) at 
org.apache.hadoop.util.Shell.execCommand(Shell.java:678) at 
org.apache.hadoop.util.Shell.execCommand(Shell.java:661) at 
org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:639) at 
org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:435) at 
org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:277) at 
org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:125) at 
org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:344) at 
org.apache.hadoop.mapreduce.Job$10.run(Job.java:1268) at 
org.apache.hadoop.mapreduce.Job$10.run(Job.java:1265) at 
java.security.AccessController.doPrivileged(Native Method) at 
javax.security.auth.Subject.doAs(Subject.java:422) at 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491) at 
org.apache.hadoop.mapreduce.Job.submit(Job.java:1265) at 
org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1286) at 
misc.projects.hadoop.exercises.WordCountDriverApp.main(WordCountDriverApp.java:29) 

실패한 라인 : 내가 명령 줄 인수 (입력 파일과 출력 디렉토리)를 제공, 이클립스에서 "드라이버"프로그램을 실행하려고 다음과 같은 오류가

job.waitForCompletion(true)

내가 그것을 작동하게하려는 때문에 내가 뭔가 이해하려면 : 작업 시작하는 명령을 포함

내가 어떤 HDFS-site.xml 파일을 제공해야 하는가를, 원사 - site.xml, ...이 모든 경우, (클러스터가없는) 로컬 모드 만 원한다면? 지금 XML 설정 파일이 없습니다. 내가 아는 한, 기본값은 로컬 모드에서 모두 정상입니다. 어쩌면 틀 렸습니다.

Windows에서 모든 Hadoop 작업을 실행할 수 있습니까? 아니면 전체 Hadoop이 Linux 전용입니까?

P.S : 하둡 의존성은 다음 하둡 윈도우에서 실행

<dependency> 
    <groupId>org.apache.hadoop</groupId> 
    <artifactId>hadoop-client</artifactId> 
    <version>2.2.0</version> 
    <scope>provided</scope> 
</dependency> 

답변

4

, 그것은 가능하지만, 당신이 당신의 자신에 그것을 해내하려고하면 당신은 흰 머리를 성장 것이다.

Windows Hadoop의 모든 파일 시스템 작업은 NativeIO (사용 가능한 경우) 또는 NativeIO가로드되지 않은 경우 winutils를 통해 라우팅됩니다. 귀하의 경우에는 winutils 경로가 필요합니다. 이클립스에서 찾을 위치를 지정하면 NativeIO를 사용할 수있다. How to add native library to “java.library.path” with Eclipse launch (instead of overriding it)을 보면, hadoop-common-project 프로젝트 타겟 bin의 위치를 ​​추가해야합니다. 여기에 NativeIO를 호스트하는 hadoop.dll이 있습니다. 하지만 그 후에도 컨테이너 출시를위한 wintils가 필요합니다. winutils.exe는 동일한 위치 (hadoop-common target/bin)에 있지만 % HADOOP_HOME %를 기반으로 코드를 찾습니다. 따라서 으로 정의해야합니다. 그리고 거기에서 위로 오르락 내리락합니다. 나는 의도적으로 세부 사항을 생략했습니다. 어떻게을 모두 구성 할 것인가? 나는 당신이해야한다고 생각하지 않기 때문에, 또는 더 정확하게 말하면, 어떻게해야 하는지를 이해해야 만합니다.

HDP from Hortonworks은 다운로드 할 수 있고 설치하고 구성한 다음 '클러스터'에 대해 실행하는 Windows 용 기성품 Hadoop 배포판을 사용하는 것이 훨씬 쉽습니다. .

+0

그다지 좋지는 않습니다.'libwinutils.lib' /'winutils.exe'를'C : \ hadoop \ bin'에 넣는 것으로 충분합니다.Eclipse에서 lib 경로와 어울리지 않아도됩니다. 한 번만 바이너리를 컴파일하기가 어렵습니다 .-) –

+0

'mvn clean install -DskipTests'는 VS2010 또는 VS2012 또는 Win SDK (그 중 하나)가 설치되어 있어야합니다. 물론 branch-2.2에서는 https://github.com/apache/hadoop의 git clone이 필요합니다. 너무 나쁜 그들은 mvn 배포판을 통해 얻을 수 없습니다 ... –

+0

그건 그렇고, Win SDK가 설치되지 않을 때 가능한 많은 상황이 있습니다. – user3791111

4
  1. 다운로드 하둡 2.6.0 또는 2.7.1 윈도우
  2. 컴파일
  3. 는 PATH의 ENV var에에 %의 HADOOP_HOME % \ bin에 추가 압축을 푼 디렉토리에 HADOOP_HOME 환경 변수를 가리키는 만들기

출처 : https://stackoverflow.com/a/27394808/543836

+0

나는이 해결책을 위의 것보다 더 쉽게 찾을 수있다 :) – Victor

관련 문제