IT 삽질기

Combiner 함수 본문

BigData/Hadoop

Combiner 함수

화이팅빌런 2021. 8. 18. 23:50

이번 글에서는 Hadoop MapReduce 과정에서 이야기하는 Combiner 함수에 대해 알아보도록 하자.

Combiner 함수

Hadoop을 사용하면 데이터를 분산처리하고 많은 양의 자원을 사용할 수 있지만 무한한 자원을 사용하는 것은 아니다. Map, Reduce 작업 진행시 자원을 최소화하여 사용할 필요가 있는데 Combiner는 Map-Reduce간 데이터 전송을 최소화할 수 있게 해준다.

 

Combiner 함수는 Reduce 함수의 출력이 Reduce 함수의 입력이 되는 것을 허용하는 것을 뜻한다.

예를 들어 최대값, 최솟값, count와 같은 결과를 얻기 위해 Map task에서 취합한 결과를 reduce에서만 진행하는 것이 아니라 각각의 Map task에서 최댓값, 최솟값, count와 같은 집계 과정을 거쳐 reduce task로 전달하는 것을 뜻한다.

Combiner 함수를 사용하면 Map-Reduce간 전달하는 데이터 양이 줄어 필요 자원을 줄일 수 있는데, 모든 함수에 적용이 가능한 것은 아니다.

위에서 언급한 것처럼 최댓값, 최솟값, count은 분산되어 있는 데이터에서 집계를 해도 결과가 달라지지 않지만, 평균과 같은 연산을 하는 경우에는 다른 결과값이 나오게 되기 때문이다.

 

sum 연산을 하는 경우 예시를 살펴보자.

각각의 map task 단계에서 sum연산을 하는 것과 reduce 연산에서 sum 연산을 하는 것의 결과가 같은 경우 이렇게 combiner 함수를 적용하여 자원을 최소화 할 수 있다.

반대로 사용할 수 없는 경우도 살펴보도록 하자.

평균을 구하는 경우 combiner이 적용되면 이렇게 전혀 다른 결과가 나오게 되며 이런 경우에는 사용할 수 없게 된다.

 

'BigData > Hadoop' 카테고리의 다른 글

Hive managed table과 external table  (0) 2021.08.02
Namenode safe mode  (0) 2021.07.28
Namenode fsimage, edits log  (0) 2021.07.26
Hadoop Kerberos 인증과정  (0) 2021.06.27
Yarn NodeManager BindException(Close_wait)  (0) 2021.06.25
Comments