이전 글에서 빅데이터를 네 단계 과정으로 처리하는 것에 대해 말씀을 드린 바 있는데요.

  1. acquire (획득)
  2. organize (구조화)
  3. analyze (분석)
  4. decide (결정)

이번 글에서는 실제 빅데이터를 구조화하거나 분석할 때 사용하는 대표적 프로그래밍 모델맵리듀스(MapReduce)에 대해 알아보도록 하려고 합니다.

맵리듀스는 저렴한 머신들을 이용하여 빅데이터를 병렬/분산 처리하기 위한 소프트웨어 프레임웍으로 2004 OSDI 컨퍼런스에서 “MapReduce: Simplified Data Processing on Large Cluster” 라는 논문에 의하여 소개되었습니다. (이제 열살쯤 되었네요!) 대표적인 구현체로 하둡이 있습니다. 현재 아마존, 야후, 페이스북 등 큰 데이터를 다루고 있는 회사들에서 하둡을 사용하고 있습니다.

맵리듀스의 기본적인 원칙은 개발자로 하여금 데이터 중심의 개발을 하도록 유도합니다. 빅데이터는 여러 머신에 분산 저장되어 있고 저장되어 있는 데이터를 가공하여 대규모 데이터에 대한 분석이 가능한 것이지요. 주로 로그 분석, 인덱스 구축, 검색 등에 사용되고 있습니다.

하지만 여러 머신에서 데이터를 처리하면 이에 관련된 문제를 해결해야 하기도 합니다. 예를 들어 여러 머신 중 하나의 머신이 제대로 동작하지 않거나 멈출 수 있고 동시 처리를 위한 프로세스 간 스케쥴링도 고려해야 합니다. 게다가 머신 간의 네트웍 구성도 고려해야 합니다. 하둡은 이런 일련의 과정을 해결하고 개발자에게는 이 모든 과정을 단순화한 형태인 맵과 리듀스 함수 인터페이스를 제공합니다.

은 흩어져 있는 비정형 input 데이터를 관련 있는 데이터끼리 묶어 정형화된 형태의 intermediate key-value 쌍 (임시 데이터 집합) 으로 변형합니다. 

리듀스는 맵 작업으로부터 생성된 정형화된 형태의 key-value 쌍을 대상으로 실제 병렬처리를 수행하여 중복 데이터를 제거한 후 원하는 데이터를 추출하는 작업을 수행합니다. 

기본적으로 맵리듀스는 배치 기반 프로세싱을 수행하며, 따라서 대규모 데이터를 다루기 편리합니다. 수행 결과는 머신의 오류를 고려하여 데이터를 복제, 분산하여 안전하게 저장합니다. 예를 들어 맵 작업은 결과를 로컬에 저장하고 리듀스 작업은 하둡 파일 시스템에 저장하는 것이지요. 처리 도중 물리적 오류가 말생하면 체크포인트한 후 오류 지점부터 재수행할 수 있습니다.

IDC는 하둡과 맵리듀스를 연계한 소프트웨어 시장이 2011년 7,700만불에서 2016년 8억1,280만불로 연평균 60% 이상 성장할 것으로 내다봤습니다.

또한 마이크로소프트는 드라이어드(Dryed)라는 맵리듀스와 유사한 형태를 띄고 있는 빅데이터 기술을 추진하다가 약 2년 반 전 이 프로젝트를 중단하고 하둡과 맵리듀스에 집중하기로 했습니다.

 

오늘은 준비한 내용은 여기까지입니다.^^