복붙노트

[HADOOP] Mapreduce 작업의 "Combiner"클래스

HADOOP

Mapreduce 작업의 "Combiner"클래스

Combiner는 Mapper 다음에 실행되고 Reducer가 실행되기 전에 주어진 노드의 Mapper 인스턴스가 방출하는 모든 데이터를 입력으로받습니다. Reducers에 출력을 내 보냅니다.

또한 reduce 함수가 교환 가능하고 연관성이있는 경우 Combiner로 사용할 수 있습니다.

내 질문은이 상황에서 "통용적이고 연관성있는"구가 무엇을 의미합니까?

해결법

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

    1.숫자 목록, 1 2 3 4 5 6이 있다고 가정하십시오.

    숫자 목록, 1 2 3 4 5 6이 있다고 가정하십시오.

    여기에서 연관성이란 작업을 수행하여 하위 그룹에 적용한 다음 결과에 적용하여 동일한 대답을 얻을 수 있음을 의미합니다.

    (1) + (2 + 3) + (4 + 5 + 6)
      ==
    (1 + 2) + (3 + 4) + (5) + (6)
      ==
    ...
    

    여기서 괄호는 결합 자의 실행이라고 생각하십시오.

    교환은 순서가 중요하지 않으므로 다음을 의미합니다.

    1 + 2 + 3 + 4 + 5 + 6
      ==
    2 + 4 + 6 + 1 + 2 + 3
      ==
    ...
    

    예를 들어, 더하기는 이전에 본 것처럼이 속성에 맞습니다. 최대 값의 최대 값이 최대 값이기 때문에 위의 "최대 값"과 동일합니다. max (a, b) == max (b, a).

    중앙값은 작동하지 않는 예입니다. 중간 값의 중앙값은 실제 중앙값이 아닙니다.

    결합 자의 또 다른 중요한 속성을 잊지 마십시오 : 키 / 값의 입력 유형과 키 / 값의 출력 유형이 동일해야합니다. 예를 들어, 문자열을 가져올 수 없습니다 : int 및 문자열 반환 : float.

    가끔씩 감속기는 숫자 값 대신 문자열을 출력 할 수 있기 때문에 감속기를 결합기로 연결하는 것을 방해 할 수 있습니다.

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

    2.commutativity의 경우 감속기가 f ()라는 함수로 표현 될 수 있다고 가정 해 봅시다. 그런 다음 f (a, b) = f (b, a)이면 감속기는 교환 가능합니다. 예를 들면 :

    commutativity의 경우 감속기가 f ()라는 함수로 표현 될 수 있다고 가정 해 봅시다. 그런 다음 f (a, b) = f (b, a)이면 감속기는 교환 가능합니다. 예를 들면 :

    결합성에 대해, 성질은 f (f (a, b), c) = f (a, f (b, c))이다. 예 :

    따라서 Map / Reduce의 컨텍스트에서 감속기는이 두 속성을 존중해야합니다. 예를 들어 감속기가 sum () 또는 max ()를 수행하는 경우 두 속성을 모두 존중하지만 mean () 또는 median ()과 같은 것은 없으므로 결합 자로 사용할 수 없습니다.

    필자는 개인적으로 네트워크 트래픽을 줄이기위한 최적화로지도 단계 이후에 메모리에서 실행되는 소형 감속기로 결합자를 보았습니다.지도 / 축소 방식을 볼 때 commutativity / associativity는 실제로 의미가 있습니다.

  3. from https://stackoverflow.com/questions/10220371/combiner-class-in-a-mapreduce-job by cc-by-sa and MIT license