MapReduce

Updated:

MapReduce

스크린샷 2019-10-23 오후 2 43 59

대용량 데이터 처리를 위한 분산 프로그래밍 모델이다. 맵리듀스는 맵(Map) 단계와 리듀스(Reduce) 단계로 처리 과정을 나누어 작업한다.

각 단계는 입력과 출력으로써 키-값 쌍을 가지고 있고, 그 타입은 프로그래머가 선택합니다. 또한, 맵과 리듀스 함수도 프로그래머가 직접 작성하게 됩니다

Map은 흩어져 잇는 데이터를 Key, Value의 형태로 연관성 있는 데이터 분류로 묶는 작업

Reduce는 Map화한 작업 중 중복 데이터를 제거하고 원하는 데이터를 추출하는 작업

스크린샷 2019-10-23 오후 2 43 56

세부적으로는 분할(Splitting), 매핑(Mapping), 셔플링(Shuffling), 리듀싱(Reducing)과정을 수행합니다.

스크린샷 2019-10-23 오후 2 45 46

  • 분할

입력한 파일 값을 라인 단위로 분할한다.

  • 매핑

분할된 라인 단위 문장을 맵(Map)함수로 전달하면 맵함수는 공백을 기준으로 문자를 분리, 단어의 개수를 확인한다. 맵함수를 거치면서 임시 데이터 결과가 메모리에 저장된다.

  • 셔플링

메모리에 저장되어 있는 맵 함수의 출력 데이터를 파티셔닝과 정렬하여 로컬 디스크에 저장, 네트워크를 통해 리듀서의 입력 데이터로 전달한다.

  • 리듀싱

단어 목록들을 반복적으로 수행하고 합을 계산하여 표시한다.

장점

  • 단순하고 사용이 편리
  • 특정 데이터모델이나 스키마, 질의에 의존적이지 않은 유연성
  • 저장 구조의 독립성
  • 데이터복제에 기반한 내구성과 재수행을 통한 내고장성 확보
  • 높은 확장성

단점

  • 고정된 단일 데이터 흐름
  • 기존DBMS보다 불편한 스키마 , 질의
  • 단순한 스케줄링
  • DBMS와 비교하여 상대적으로 낮은 성능
  • 개발도구의 불편함과 기술지원의 어려움

Leave a comment