본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
MapReduce
다수의 머신들로 구성한 분산 데이터베이스를 병렬로 처리하기 위한 프로그래밍 모델
  • 구글에서 처음으로 개념 소개
  • 하둡 프레임워크에서 활용
맵(Map) 작업과 리듀스(Reduce) 작업으로 구성
  • 아래의 맵 - 셔플 - 리듀스 작업을 여러 번 반복

  • 분산된 데이터를 Key-Value로 구성
  • 중간 결과를 리듀스로 전달
  • 리스트에서 원하는 데이터를 찾아서 집계
  • 셔플과 소트는 하둡 등 엔진이 담당한다.
  • 개발자는 맵 함수와 리듀스 함수를 개발한다.
    • 맵, 리듀스 함수는 대상 데이터에 맞추어 설계해야 한다/
  • 기존 RDBMS의 개념을 도입하여 맵리듀스 작업을 수월하게 도와주는 도구가 하이브

구글의 맵리듀스 논문은 이 모델로 쉽게 표현되는 계산을 다음처럼 든다.[1]

기능 Map Reduce
단어 빈도수(word count) (단어, 1) 을 내보낸다 단어별로 더해 (단어, 횟수)
분산 grep 패턴에 맞는 줄을 내보낸다 그대로 복사(항등 함수)
URL 접근 빈도 로그에서 (URL, 1) URL 별 합계
역방향 웹 링크 그래프 페이지 source 의 링크마다 (target, source) (target, source 리스트)
역색인 문서를 파싱해 (단어, 문서번호) 문서번호로 정렬해 (단어, 문서번호 리스트)
분산 정렬 (키, 레코드) 그대로 내보낸다(정렬은 프레임워크가 한다)
  • 하이브를 이용한 기본적인 맵리듀스 작업은 아주 느림
  • 맵리듀스의 가치는 빠른 처리가 아닌 처리할 수 없던 데이터를 처리할 수 있게 해주는 것
  • 더 빠른 처리를 위해 스파크 등이 사용됨
  1. ↑ Jeffrey Dean, Sanjay Ghemawat, 「MapReduce: Simplified Data Processing on Large Clusters」, OSDI 2004, https://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf, 확인일: 2026-11-04.