맵리듀스 (MapReduce)
쉽게 풀면
수만 장의 시험지를 채점해서 전체 평균을 내야 한다고 해봅시다. 혼자 다 채점하려면 몇 날 며칠이 걸리지만, 채점 도우미 100명에게 시험지를 나눠주고(Map 단계) 각자 담당분의 점수를 매기게 한 뒤, 그 점수들을 한곳에 모아 합산해서 평균을 내면(Reduce 단계) 훨씬 빨리 끝납니다. 맵리듀스도 똑같은 원리입니다. 처리해야 할 데이터를 여러 컴퓨터에 조각내어 나눠주고, 각 컴퓨터가 자기 몫을 독립적으로 계산(Map)한 다음, 그 부분 결과들을 모아서 최종 답을 만들어냅니다(Reduce). 프로그래머는 "각 조각을 어떻게 계산할지"와 "결과를 어떻게 합칠지"만 정해주면 되고, 데이터를 나누고 여러 대의 컴퓨터에 분배하는 복잡한 일은 시스템이 알아서 처리해줍니다.
왜 중요한가
맵리듀스는 데이터 병렬 처리를 단순한 프로그래밍 모델로 표준화하여 대규모 분산 컴퓨팅을 대중화시킨 개념이기 때문에 빅데이터·분산시스템 연구에서 자주 인용되는 기초적인 아이디어입니다. 이후 등장한 Spark, Hadoop 생태계 전반의 설계 철학에 영향을 주었으며, 대규모 로그 분석, 검색엔진 색인 구축, 유전체 데이터 처리처럼 데이터 양이 방대한 여러 응용 분야의 연구에서 비교 기준으로 다뤄집니다.
논문에서는 이렇게 쓰입니다
이 문장은 데이터 양이 너무 커서 컴퓨터 한 대로는 감당이 안 되므로, 맵리듀스 방식으로 여러 대의 컴퓨터에 작업을 나눠 동시에 처리했다는 뜻입니다.
생물정보학 연구에서 대용량 서열 데이터 처리에 분산 프레임워크를 적용한 사례를 설명할 때 사용된다.
정보검색 시스템 연구에서 대규모 문서 색인화 작업을 설명할 때 흔히 쓰이는 표현이다.
조금 더 깊게 보면
맵리듀스는 각 단계 사이의 중간 결과를 디스크에 기록하고, 특정 노드가 실패하면 해당 작업만 다른 노드에서 재실행하는 방식으로 장애 허용성을 확보합니다. 이런 견고함 덕분에 신뢰할 수 없는 다수의 범용 서버로도 안정적인 대규모 처리가 가능해졌지만, 매 단계마다 디스크 입출력이 발생해 반복 연산이 많은 작업에는 비효율적이라는 한계가 있어, 이후 메모리 기반 처리를 지원하는 Spark 같은 후속 프레임워크가 등장하게 되었습니다.
주의할 점
맵리듀스는 각 단계가 끝날 때마다 중간 결과를 디스크에 저장하기 때문에 안정적이지만, 그만큼 반복 계산이 많은 머신러닝 작업 등에서는 속도가 느려질 수 있습니다. 이 때문에 이후 등장한 Spark 같은 프레임워크는 중간 결과를 메모리에 유지하는 방식으로 이 단점을 보완했습니다. 여러 서버로 요청을 나누는 로드밸런싱과는 달리, 맵리듀스는 "계산 작업 자체"를 나누고 합치는 데 초점을 둡니다.