복붙노트

[HADOOP] 작업 클래스의 setJarByClass 메소드에 관한 Hadoop 질의

HADOOP

작업 클래스의 setJarByClass 메소드에 관한 Hadoop 질의

Hadoop API 문서에서 제공됩니다.

setJarByClass 

public void setJarByClass(Class<?> cls)

Set the Jar by finding where a given class came from.

이 설명은 정확히 무엇을 의미합니까? 위의 메서드에서 지정한 클래스 파일 인수에서 JAR 파일을 만듭니다. jar 파일이 MapReduce 작업을 위해 실행되는지 확인합니다.

해결법

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

    1.이 메소드는 각 노드가 Mapper 및 Reducer 클래스를 찾을 jar 파일을 설정합니다.

    이 메소드는 각 노드가 Mapper 및 Reducer 클래스를 찾을 jar 파일을 설정합니다.

    그것은 주어진 클래스로부터 항아리를 생성하지 않습니다. 오히려 주어진 클래스를 포함하는 jar를 식별합니다. 그리고 예, 그 jar 파일은 MapReduce 작업을 위해 "실행"됩니다 (실제로 jar 파일의 Mapper와 Reducer가 실행됩니다).

    (커맨드 라인에서 항아리를 제공하기 때문에이 방법의 필요성에 대한 유사한 질문에 대한 Stanley Xu의 답변도 참조하십시오)

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

    2.Job 클래스의 위 메서드는 드라이버에서 호출됩니다. 드라이버는 클라이언트, 일반적으로 데스크탑 또는 클러스터의 일부가 아닌 에지 시스템 (예 : jar 파일)에서 클라이언트로 호출됩니다. 클러스터에서 mapreduce 작업을 실행하려면 Mapper, 감속기 및 기타 필수 클래스를 클라이언트 시스템에서 클러스터로 보내야합니다. 드라이버 클래스는 필수 클래스를 포함하는 jar 파일을 클러스터로 보내는 작업을 처리합니다. 어느 항아리를 보내야 할지를 드라이버가 지정한대로 지정해야합니다. 드라이버의 클래스 경로에있는 jar 파일의 힙 사이에 어느 항아리를 보내야할지 모릅니다. 이것은 setJarByClass 또는 setJar 또는 Job 클래스에서 유사한 메소드의 다른 변형을 사용하여 수행됩니다.

    Job 클래스의 위 메서드는 드라이버에서 호출됩니다. 드라이버는 클라이언트, 일반적으로 데스크탑 또는 클러스터의 일부가 아닌 에지 시스템 (예 : jar 파일)에서 클라이언트로 호출됩니다. 클러스터에서 mapreduce 작업을 실행하려면 Mapper, 감속기 및 기타 필수 클래스를 클라이언트 시스템에서 클러스터로 보내야합니다. 드라이버 클래스는 필수 클래스를 포함하는 jar 파일을 클러스터로 보내는 작업을 처리합니다. 어느 항아리를 보내야 할지를 드라이버가 지정한대로 지정해야합니다. 드라이버의 클래스 경로에있는 jar 파일의 힙 사이에 어느 항아리를 보내야할지 모릅니다. 이것은 setJarByClass 또는 setJar 또는 Job 클래스에서 유사한 메소드의 다른 변형을 사용하여 수행됩니다.

    분명히 이것을 지정하지 않으면,이 메소드를 호출하지 않거나 주석을다는 것은 슬레이브 노드에서 ClassNotFound 예외를 발생 시킨다는 것을 의미합니다.

    희망이 분명해!

  3. ==============================

    3.

    job.setJarByClass(WordCount.class);
    

    해당 Jar에 클래스를 지정하여 Mapper 및 Reducer가 포함 된 Jar을 식별하는 데 도움을줍니다.

  4. from https://stackoverflow.com/questions/3912267/hadoop-query-regarding-setjarbyclass-method-of-job-class by cc-by-sa and MIT license