해결책
구글의 크롤링 및 로그 데이터는 단일 서버가 보관하거나 처리할 수 있는 규모를 넘어섰고, 당연한 해법은 더 크고 비싼 서버를 쓰거나 아무도 쓰고 싶어 하지 않는 맞춤형 병렬 프로그램을 작성하는 것이었다.
2003년 2월에 처음 작성된 딘과 게마왓의 라이브러리는 프로그래머가 단 두 개의 함수만 제공하면 되게 했고, 런타임이 입력을 분할하고, 전송하고, 키로 정렬하고, 실패한 작업을 재시도했다.
2004년 말까지 구글은 구글 뉴스와 차이스트가이트부터 대규모 그래프 및 머신러닝 작업에 이르기까지 다양한 작업을 위해 최대 수만 대의 머신에서 수백 개의 서로 다른 맵리듀스 프로그램을 실행하고 있었다.
OSDI 2004에서 발표되고 이후 Communications of the ACM에 실린 이 논문은 빅데이터 처리의 템플릿이 되었고, 오픈소스 하둡으로 재구현되어 이 모델을 업계의 기본값으로 만들었다.
이룬 것
연산을 데이터로 옮기고 맵+리듀스로 분할한다
작업을 맵과 리듀스로 나누면 일반 엔지니어가 스레드나 메시지 전달을 작성하지 않고도 병렬화할 수 있다.
데이터를 연산과 같은 머신에 두면 테라바이트급 데이터를 네트워크로 전송하는 일을 피할 수 있다.
실패한 맵 작업을 재시도하면 신뢰할 수 없는 PC들의 팜이 하나의 신뢰할 수 있는 머신처럼 동작한다.
데이터가 한 대의 장비에 너무 클 때는 더 크고 비싼 머신을 사는 대신, 작업을 손쉽게 병렬화할 수 있는 조각들로 분해하고 스케줄러가 하드웨어 장애를 숨기게 하라.
그 후
맵리듀스는 구글의 표준 배치 모델이 되었고, 하둡을 통해 업계 전반에 빅데이터 시대를 확립한 엔진이 되었다. 구글은 이후 대화형 SQL이 2단계 배치 모델을 대체하면서 더 높은 수준의 시스템(FlumeJava, Dataflow)을 추가했고, 맵리듀스 자체는 밀려났지만, 큰 작업이 두 개의 함수가 될 수 있다는 핵심 아이디어는 영구히 남았다.
근거 확인하기
출처
- MapReduce: Simplified Data Processing on Large Clusters (OSDI 2004) USENIX · usenix.org
- Sorting the World: Google Invents New Way to Manage Data Wired · wired.com ·