MapReduce 프레임워크는 분산 병렬 처리 방식으로 여러개의 작업 노드에 작업을 분산하여 병렬 수행할 수 있는 프레임워크이다.
MapReduce의 각 단계
Map 단계
분산된 데이터를 키, 값의 리스트로 모으는 단계
Shuffle and Sort 단계
맵 단계에서 나온 중간결과를 해당 Reduce 함수에 전달하는 단계
Reduce 단계
리스트에서 원하는 데이터를 찾아서 집계하는 단계
개발자는 Map 함수와 Reduce 함수를 정의하여 데이터 처리 방법을 정하면, 시스템은 자동으로 Shuffle and Sort 단계를 수행해준다.
MapReduce 절차
Hadoop이 각 데이터 노드에 나뉘어 담긴 데이터들에 map()함수 배포
→ 각 map()함수는 데이터를 읽고 <key, value> 출력
→ Hadoop이 출력된 <key, value>들을 shuffle과 sort를 통해 그룹핑
→ 그룹핑된 데이터에 reduce()함수 배포
→ reduce()함수는 <key, value>를 읽고 결과 출력
MapReduce는 객체지향적인 Java나 SQL 친화적인 Hive, script 언어인 Pig를 이용해 프로그래밍 하여 구현할 수 있다.