MapReduce
Updated:
MapReduce
대용량 데이터 처리를 위한 분산 프로그래밍 모델이다. 맵리듀스는 맵(Map) 단계와 리듀스(Reduce) 단계로 처리 과정을 나누어 작업한다.
각 단계는 입력과 출력으로써 키-값
쌍을 가지고 있고, 그 타입은 프로그래머가 선택합니다. 또한, 맵과 리듀스 함수도 프로그래머가 직접 작성하게 됩니다
Map
은 흩어져 잇는 데이터를 Key, Value
의 형태로 연관성 있는 데이터 분류로 묶는 작업
Reduce
는 Map화한 작업 중 중복 데이터를 제거하고 원하는 데이터를 추출하는 작업
세부적으로는 분할(Splitting)
, 매핑(Mapping)
, 셔플링(Shuffling)
, 리듀싱(Reducing)
과정을 수행합니다.
- 분할
입력한 파일 값을 라인 단위로 분할한다.
- 매핑
분할된 라인 단위 문장을 맵(Map)함수로 전달하면 맵함수는 공백을 기준으로 문자를 분리, 단어의 개수를 확인한다. 맵함수를 거치면서 임시 데이터 결과가 메모리에 저장된다.
- 셔플링
메모리에 저장되어 있는 맵 함수의 출력 데이터를 파티셔닝과 정렬하여 로컬 디스크에 저장, 네트워크를 통해 리듀서의 입력 데이터로 전달한다.
- 리듀싱
단어 목록들을 반복적으로 수행하고 합을 계산하여 표시한다.
장점
- 단순하고 사용이 편리
- 특정 데이터모델이나 스키마, 질의에 의존적이지 않은 유연성
- 저장 구조의 독립성
- 데이터복제에 기반한 내구성과 재수행을 통한 내고장성 확보
- 높은 확장성
단점
- 고정된 단일 데이터 흐름
- 기존DBMS보다 불편한 스키마 , 질의
- 단순한 스케줄링
- DBMS와 비교하여 상대적으로 낮은 성능
- 개발도구의 불편함과 기술지원의 어려움
Leave a comment