맵 리듀스 (Map Reduce) 패턴

1. 개요

맵리듀스(MapReduce) 패턴은 대용량 데이터(Big Data)를 분산 환경에서 효율적으로 처리하기 위한 대표적인 병렬 처리 패턴이다. 구글(Google)이 대규모 데이터 분석을 위해 제안하였으며, 현재 Hadoop, Spark 등 다양한 빅데이터 플랫폼의 핵심 처리 구조로 활용된다.

2. 기본 개념 및 목적

  • 개념: 대용량 데이터를 처리하는 작업을 두 가지 주요 함수, 맵(Map)과 리듀스(Reduce)로 나누어 처리하는 방식이다. 즉, "Divide and Conquer(분할 정복)" 개념을 데이터 처리에 적용한 구조이다.
  • 목적: 대용량의 비정형 데이터를 여러 대의 저렴한 컴퓨터(노드)에 분산하여 저장하고 처리함으로써, 데이터 처리의 확장성, 내결함성, 경제성을 확보할 수 있다.
  • 입력/출력 형태: 모든 데이터는 (키, 값) 쌍의 형태로 처리된다.

 

 

 

3. 구조 및 동작 원리

3.1 구성 요소

구성 요소 역할
Split 입력 데이터를 병렬로 처리할 수 있는 더 작은 조각으로 분리
Map 함수 조각으로 분리된 입력 데이터를 (Key, Value) 쌍으로 생성
Shuffle / Sort 단계 같은 Key를 가진 데이터끼리 그룹화 및 정렬
Reduce 함수 그룹화된 데이터를 집계하여 최종 결과 생성

 

 

 

3.2 주요 동작 단계

3.2.1 Split 단계

Split 함수는 입력 데이터를 작은 조각으로 분리한다.

  • 입력: 처리할 대용량 데이터 셋(파일, 레코드 등).
  • 처리: 입력 데이터를 작은 조각(Split)으로 분리.

3.2.2 Map 단계

Map 함수는 분리된 입력 데이터를 받아 새로운 형태의 (중간 키, 중간 값) 쌍으로 변환한다.

  • 입력: 분리된 입력 데이터.
  • 처리: 데이터를 분석하여 원하는 정보가 담긴 (중간 키, 중간 값) 쌍 생성.

3.2.3 Shuffle & Sort 단계

맵 단계의 출력을 리듀스 단계로 전달하기 위해 데이터를 재배치하고 정렬한다.

  • 셔플(Shuffle): 모든 맵 태스크의 출력 중, 동일한 중간 키를 가진 값들을 그룹화.
  • 정렬(Sort): 리듀스 태스크로 전달되기 전에, 중간 키를 기준으로 정렬.

3.2.4 Reduce 단계

리듀스 함수는 셔플 단계에서 전달받은 동일한 키를 가진 값들의 목록을 모아 최종 결과를 생성한다.

  • 입력: (중간 키, 값들의 목록) 쌍.
  • 처리: 주어진 값들의 목록을 통합, 집계, 요약하여 최종 (출력 키, 출력 값) 쌍 생성.

 

4. 특징

구분 내용
장점 대용량 데이터를 병렬로 분산 처리하여 효율적.
노드를 추가함으로써 수평적으로 확장이 매우 용이.
노드에 오류가 발생해도 다른 노드에서 작업을 재실행하여 자동 복구 가능.
단점 반복적인 처리실시간 스트리밍 처리에는 비효율적.
맵과 리듀스 사이의 디스크 I/O (입출력)가 많아 지연 시간 발생.
프로그래밍 모델 자체가 단순 배치 처리에 초점.
적용 환경 Hadoop Distributed File System(HDFS), Spark 등
적용 업무 로그 분석, 통계 집계, 데이터 마이닝, 텍스트 분석 등

 

5. 결론 (시사점)

맵리듀스 패턴은 대규모 데이터를 분산·병렬 처리하여 효율적으로 집계하는 핵심 기술로, 현대의 빅데이터 플랫폼 및 클라우드 데이터 파이프라인의 기초가 된다. 최근에는 메모리 기반 처리(Spark, Flink 등)로 발전하여 실시간성과 성능을 개선한 차세대 데이터 처리 구조로 진화하고 있다.

+ Recent posts