복붙노트

[HADOOP] Hadoop Mapper Context 객체

HADOOP

Hadoop Mapper Context 객체

Hadoop 프레임 워크는 매퍼 또는 감속기 클래스의 run () 메소드를 어떻게 호출합니까? 프레임 워크는 run () 메서드를 호출하지만 하나의 컨텍스트 개체가 필요하므로 Hadoop이 해당 개체를 전달하는 방법은 무엇입니까? 해당 정보에는 어떤 정보가 있습니까?

해결법

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

    1.run () 메소드는 Java Run Time Polymorphism (즉, 메소드 겹쳐 쓰기)을 사용하여 호출됩니다. 아래 링크에서 # 569 행을 볼 수 있듯이, 확장 된 매퍼 / 감속기는 Java Reflection API를 사용하여 인스턴스화됩니다. MapTask 클래스는 클라이언트 프로그램이 구성한 작업 구성 객체에서 확장 매퍼 / 감속기의 이름을 가져옵니다. job.setMapperClass ()를 사용하여 확장 된 매퍼 / 감속기 클래스

    run () 메소드는 Java Run Time Polymorphism (즉, 메소드 겹쳐 쓰기)을 사용하여 호출됩니다. 아래 링크에서 # 569 행을 볼 수 있듯이, 확장 된 매퍼 / 감속기는 Java Reflection API를 사용하여 인스턴스화됩니다. MapTask 클래스는 클라이언트 프로그램이 구성한 작업 구성 객체에서 확장 매퍼 / 감속기의 이름을 가져옵니다. job.setMapperClass ()를 사용하여 확장 된 매퍼 / 감속기 클래스

    다음은 Hadoop Source MapTask.java에서 가져온 코드입니다.

    mapperContext = contextConstructor.newInstance(mapper, job, getTaskID(),
                                                      input, output, committer,
                                                      reporter, split);
    
       input.initialize(split, mapperContext);
       mapper.run(mapperContext);
       input.close();` 
    

    라인 # 621은 런타임 다형성의 한 예입니다. 이 줄에서 MapTask는 'Mapper Context'를 매개 변수로 사용하여 구성된 매퍼의 run () 메소드를 호출합니다. run ()이 확장되지 않으면 org.apache.hadoop.mapreduce.Mapper에서 run () 메소드를 호출합니다.이 메소드는 구성된 매퍼에서 map () 메소드를 다시 호출합니다.

    위 링크의 # 616 행에서 MapTask는 @harpun에서 언급 한대로 작업 구성 등의 모든 세부 정보를 포함하는 컨텍스트 개체를 만든 다음 # 621 행의 run () 메서드로 전달합니다.

    위의 설명은 적절한 ReduceTask 클래스를 주 항목 클래스로 사용하여 작업을 줄일 수 있습니다.

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

    2.맵퍼의 run () 메소드는 맵 태스크 시도를 실행할 때 MR 프레임 워크에 의해 호출됩니다. 컨텍스트에 관한 한, Mapper.Context에 대한 문서를 살펴보십시오. 특히 구현 된 인터페이스와 javadoc은 컨텍스트에 포함 된 정보의 전체 개요를 제공합니다. 컨텍스트를 통해 다음과 같은 데이터에 액세스 할 수 있습니다.

    맵퍼의 run () 메소드는 맵 태스크 시도를 실행할 때 MR 프레임 워크에 의해 호출됩니다. 컨텍스트에 관한 한, Mapper.Context에 대한 문서를 살펴보십시오. 특히 구현 된 인터페이스와 javadoc은 컨텍스트에 포함 된 정보의 전체 개요를 제공합니다. 컨텍스트를 통해 다음과 같은 데이터에 액세스 할 수 있습니다.

    물론 Reducer : Reducer.Context와 비슷한 컨텍스트 개체가 있습니다.

  3. from https://stackoverflow.com/questions/16337425/hadoop-mapper-context-object by cc-by-sa and MIT license