복붙노트

[HADOOP] Cygwin없이 Windows의 로컬 모드에서 Hadoop 작업 (WordCount 샘플과 같은)을 실행할 수 있습니까?

HADOOP

Cygwin없이 Windows의 로컬 모드에서 Hadoop 작업 (WordCount 샘플과 같은)을 실행할 수 있습니까?

Windows 7, Java 8, Maven 및 Eclipse가 있습니다. 나는 Maven 프로젝트를 만들었고 여기서 거의 같은 코드를 사용했다.

그것은 단순한 "단어 수"샘플입니다. 이클립스에서 "드라이버"프로그램을 시작하려고하면 명령 줄 인수 (입력 파일과 출력 디렉토리)를 제공하고 다음과 같은 오류가 발생합니다.

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)

실패한 행 (WordCountDriverApp.java:29)에는 작업을 시작하는 명령이 들어 있습니다.

job.waitForCompletion (true)

나는 그것을 작동하게 만들고 싶기 때문에 나는 무엇인가를 이해하기를 원한다.

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

Windows에서 (Hadoop 작업을 실행하기 위해) 모든 것이 가능합니까 아니면 Hadoop 전체가 Linux 전용입니까?

추신.: Hadoop 의존성은 다음과 같습니다.

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

해결법

  1. ==============================

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

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

  2. ==============================

    2.Hadoop은 Windows에서 실행되지만 가능할 수도 있지만 혼자서 해체하려고하면 흰 머리카락이 자랄 것입니다.

    Hadoop은 Windows에서 실행되지만 가능할 수도 있지만 혼자서 해체하려고하면 흰 머리카락이 자랄 것입니다.

    우선 Windows Hadoop의 모든 파일 시스템 작업은 가능한 경우 NativeIO를 통해 또는 NativeIO가로드되지 않은 경우 winutils를 통해 라우팅됩니다. 귀하의 경우에는 winutils 경로가 필요합니다. 이클립스에서 찾을 위치를 지정하면 NativeIO를 사용할 수 있습니다. "java.library.path"에 네이티브 라이브러리를 추가하는 방법 (오버라이드 대신) 이클립스 런치와 함께, hadoop-common-project 프로젝트 타겟 bin의 위치를 ​​추가해야한다. 여기서 hadoop.dll을 찾을 수있다. NativeIO를 호스팅합니다. 그러나 그 후에도 컨테이너 출시를위한 wintils가 필요합니다. winutils.exe는 동일한 위치 (hadoop-common target / bin)에 있지만, 코드는 % HADOOP_HOME %에 기반하여이를 찾습니다. 따라서이를 정의해야합니다. 그리고 거기에서 위로 오르락 내리락합니다. 나는 의도적으로이 모든 것을 구성하는 방법에 대한 세부 사항을 생략했다. 왜냐하면 내가해야한다고 생각하지 않거나 더 정확하게 말하면 어떻게해야 하는지를 이해해야 만한다.

    Hortonworks의 HDP, 다운로드, 설치, 구성 후 '클러스터'에 대해 실행할 수있는 Windows 용 Hadoop 배포판을 사용하면 훨씬 쉽습니다.

  3. from https://stackoverflow.com/questions/26516865/is-it-possible-to-run-hadoop-jobs-like-the-wordcount-sample-in-the-local-mode by cc-by-sa and MIT license