복붙노트

[HADOOP] 결합기 구현 및 내부 작업

HADOOP

결합기 구현 및 내부 작업

내 MR 코드에서 Combiner를 사용하여 WordCount라고 말하고 싶습니다.

어떻게 구현해야합니까?

어떤 종류의 데이터가 결합기에서 감속기로 전달됩니까?

누구나 Combiner와 Reducer의 코드를 제공 할 수 있다면 좋을 것입니다.

결합 자 작동 방식을 설명 할 수 있다면 더 좋을 것입니다.

나는 mapreduce에 처음이고 나는 배우는 단계에있다.

미리 감사드립니다 :)

해결법

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

    1.컴 바이 너 (semi-reducer라고도 함).

    컴 바이 너 (semi-reducer라고도 함).

    Combiner의 주요 기능은 맵 출력 레코드를 동일한 키로 요약하는 것입니다.

    Map 클래스와 Reduce 클래스 사이에서 Combiner 클래스를 사용하여 Map과 Reduce 간의 데이터 전송량을 줄입니다.

    샘플 코드 설명.

    MAP 입력 :

    What do you mean by Object
    What do you know about Java
    What is Java Virtual Machine
    How Java enabled High Performance
    

    MAP 출력

    <What,1> <do,1> <you,1> <mean,1> <by,1> <Object,1>
    <What,1> <do,1> <you,1> <know,1> <about,1> <Java,1>
    <What,1> <is,1> <Java,1> <Virtual,1> <Machine,1>
    <How,1> <Java,1> <enabled,1> <High,1> <Performance,1>
    

    이 MAP 출력은 Combiner에 입력으로 전달됩니다.

    결합기 출력

       <What,1,1,1> <do,1,1> <you,1,1> <mean,1> <by,1> <Object,1>
       <know,1> <about,1> <Java,1,1,1>
       <is,1> <Virtual,1> <Machine,1>
       <How,1> <enabled,1> <High,1> <Performance,1>
    

    이 결합기 출력은 Reducer에 입력으로 전달됩니다.

    감속기 출력

       <What,3> <do,2> <you,2> <mean,1> <by,1> <Object,1>
       <know,1> <about,1> <Java,3>
       <is,1> <Virtual,1> <Machine,1>
       How,1> <enabled,1> <High,1> <Performance,1> 
    

    자바를 사용하고 있다면, 아래의 코드는 Combiner와 Reducer를 동일한 클래스로 설정합니다. 이상적입니다.

      job.setJarByClass(WordCount.class);
      job.setMapperClass(TokenizerMapper.class);
      job.setCombinerClass(IntSumReducer.class);
      job.setReducerClass(IntSumReducer.class);
    

    자바 @tutorialspoint의 작업 예제를 살펴보십시오.

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

    2.결합기는 감속기와 동일한 작업을 수행하고 감속기 인터페이스를 구현할 수 있으며 탈 방식을 통해 결합기를 사용하면 네트워크 대역폭의 양이 적어 중간체 (o / p는 매퍼)를 감속기로 전송할 수 있습니다.

    결합기는 감속기와 동일한 작업을 수행하고 감속기 인터페이스를 구현할 수 있으며 탈 방식을 통해 결합기를 사용하면 네트워크 대역폭의 양이 적어 중간체 (o / p는 매퍼)를 감속기로 전송할 수 있습니다.

    감속기에서 사용되는 응용 프로그램이 Commutative와 Associative를 모두 준수하는 경우 결합 메소드에서 메소드를 축소하는 것과 동일한 reduce 메소드 (자신의 감속기에 속함)를 사용할 수 있습니다.

    MR (맵 축소) 애플리케이션 용 결합기를 작성하더라도 조합기를 실행하는 규칙은 없습니다. 결합기를 실행하여 유출 횟수가 적어도 3 회 이상이어야합니다.

    내 매퍼 출력은 ,,,,, <34>입니다. 결합기를 사용하면 감속기에 대한 의견을 입력 할 수 있습니다. 결합기와 함께, 나는 감속기에 입력을 전달할 수 있습니다.

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

    3.결합자는지도와 축소 단계 사이의 데이터 전송량을 줄이기 위해 매퍼와 감속기 사이에서 사용됩니다.

    결합자는지도와 축소 단계 사이의 데이터 전송량을 줄이기 위해 매퍼와 감속기 사이에서 사용됩니다.

    결합 자 구현은 감속기 구현과 유사합니다. reduce 인터페이스의 reduce 메소드를 구현해야합니다. 입력 및 출력 키 값 쌍은 감속기와 비슷해야합니다.

    우리 드라이버에서 우리는 감속기 클래스를 결합 자로 언급 할 수 있습니다.

    job.setCombinerClass(MyReducer.class)
    

    Combiners는 교환 가능하고 연관성이있는 함수에서만 사용할 수 있습니다.

    For example maximum of numbers
    
    Map 1 output - (23,27, 31) -> Combiner -> 31
    Map 2 output - (22,36,33,45) -> Combiner -> 45
    Map 3 output - (41,33,15,16) -> Combiner -> 41
    
    Combiner acts on each of the mapper's output.
    
    Combiner output - (31,45,41) ->Reducer -> 45
    

    데이터 전송 양은 이제 예제에서 분명합니다.

  4. from https://stackoverflow.com/questions/33406566/combiner-implementation-and-internal-working by cc-by-sa and MIT license