
Data Science
390
맵리듀스가 아닌 기존의 방법을 사용하면 컴퓨터 한 대로 모든 문서를 한 번
씩 접근해야 한다. 즉, 모든 문서가 그 컴퓨터의 저장 공간 안에 있거나, 프로세
싱 도중 그 컴퓨터에게 전달되어야 한다는 것을 의미한다. 여기서 중요한 것은
그 컴퓨터가 문서를 한 번에 하나밖에 처리하지 못한다는 것이다.
보통은 코어가 여러 개 있기 때문에 코드만 잘 작성하면 한 번에 몇 개씩 처리할 수 있지만,
여전히 데이터를 해당 컴퓨터에 전달해야 한다는 문제가 있다.
이번에는 수십억 개의 문서가
100
대의 컴퓨터에 흩어져 있다고 해보자. 제대로
된 인프라만 갖춰져 있다면 (그리고 세부적인 부분은 조금 무시한다면) 우리는
다음과 같이 문서를 처리할 수 있다.
· 각 컴퓨터는 자신이 보유하고 있는 문서에
mapper
를 수행하고, 여러 개의
키-값 쌍을 생성한다.
· 키-값 쌍들을 지정된 몇 개의 리듀스 작업을 수행하는 컴퓨터로 보낸다. 단,
같은 키를 가진 쌍들은 모두 동일한 컴퓨터에 모이게 한다.
· 리듀스 작업을 수행하는 각 컴퓨터는 키별로 쌍들을 묶고
reducer
를 실행
한다.
· 각 키-최종 값 쌍을 반환한다.
이 방법이 우수한 이유는 수평적 확장이 용이하기 때문이다. 즉, 컴퓨터의 개수
를 두 배로 늘린다면(맵리듀스