복붙노트

[HADOOP] 클러스터를 하둡과 "하둡 단지"로 실행하는 실행 항아리 보내기

HADOOP

클러스터를 하둡과 "하둡 단지"로 실행하는 실행 항아리 보내기

나는 일반적으로 주요 방법으로 실행 항아리 패키지를 만들고 명령 줄 "하둡 항아리 Some.jar ClassWithMain 입력 출력"에 의해 운영

이 메인있어서, 작업 및 구성으로 구성 될 수도 있고 구성 클래스 conf.setMapperClass (Mapper.class) 등 매퍼 또는 감속기 클래스를 지정하는 세터를 갖는다.

그러나 원격 작업을 제출의 경우는 하둡 클라이언트 API를 사용하려면 항아리와 매퍼 이상의 클래스를 설정해야합니다.

job.setJarByClass(HasMainMethod.class);
job.setMapperClass(Mapper_Class.class);
job.setReducerClass(Reducer_Class.class);

나는 프로그램의 주요 방법은 매퍼와 감속기를 지정하기 위해 원격 하둡 클러스터에 클라이언트에 항아리를 전송하고 "하둡 항아리"같은 명령이 항아리를 실행합니다.

그래서 내가 어떻게이 문제를 처리 할 수 ​​있습니까?

해결법

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

    1.하둡은 쉘 스크립트입니다. 결국, 하둡 항아리 org.apache.hadoop.util.RunJar를 호출합니다. 무엇 하둡 단지 당신이 CLASSPATH를 설정 돕고있다 않습니다. 그래서 직접 사용할 수 있습니다.

    하둡은 쉘 스크립트입니다. 결국, 하둡 항아리 org.apache.hadoop.util.RunJar를 호출합니다. 무엇 하둡 단지 당신이 CLASSPATH를 설정 돕고있다 않습니다. 그래서 직접 사용할 수 있습니다.

    예를 들어,

    String input = "...";
    String output = "...";
    org.apache.hadoop.util.RunJar.main(
        new String[]{"Some.jar", "ClassWithMain", input, output});
    

    그러나, 당신은 당신이 그것을 사용하기 전에 올바르게 CLASSPATH를 설정해야합니다. 올바른 CLASSPATH를받을 수있는 편리한 방법은 하둡 클래스 경로입니다. 이 명령을 입력하면 전체 CLASSPATH를 얻을 것이다.

    당신이 당신의 자바 응용 프로그램을 실행하기 전에 그런 다음 CLASSPATH를 설정합니다. 예를 들어,

    export CLASSPATH=$(hadoop classpath):$CLASSPATH
    java -jar YourJar.jar
    
  2. from https://stackoverflow.com/questions/18394663/send-executable-jar-to-hadoop-cluster-and-run-as-hadoop-jar by cc-by-sa and MIT license