MapReduce 학습

맵리듀스?

맵리듀스?

  1. 무엇? 데이터에서 원하는 결과를 뽑아내기 위한 방법으로 원본의 데이터를 맵(map)을 만들어서 원하는 데이터로 줄여주는(reduce) 방법이다.
  2. 무엇을 해야하나? 사용자 혹은 개발자는 맵리듀스는 맵과 리듀스 두개의 주요 기능으로 이루어져있고, 뽑으려는 데이터의 형태에 맞게 두개의 기능을 개발하면 된다. 맵하는 방법을 맵퍼(mapper), 리듀스하는 방법을 리듀서(reducer)에 정의한다.

Map and Mapper

맵은 로우 데이터키-밸류 자료구조인 맵으로 만드는 과정을 의미한다. 뒷단에서 데이터를 사용하기 좋게 전처리하는 과정이 맵에 해당한다.

RDS에서 데이터를 뽑아낸다면 단순 셀렉트나 관계를 통한 조인으로 데이터를 뽑아낼 수 있겠지만, RDS가 아니라서 컬럼이 제대로 정의되어 있지 않다거나, 다양한 DB에서 데이터를 추출하거나, 파일에서 데이터를 뽑아내려면 데이터를 처리가능한 구조로 뽑아내는 과정이 필요하다. 다음과 같은 기능을 포함한다.

  • 선별 : 예를 들어) 일간 검색량을 측정할 경우 해당 일의 데이터만 뽑음
  • 변형 : 예를 들어) IP별 로그인 숫자를 뽑으려고 하는 경우, 로그인 로그 전체에서 Key를 Client IP로, Value를 1로 뽑음.

Reduce and Reducer

리듀스는 전처리된 데이터에서 필요한 결과를 정제하는 것을 의미한다. 맵리듀스이므로 입력은 맵이 된다. 단순 카운팅, 합산, 평균을 기간, 파일단위 등등을 중심으로 진행한다. 다음과 같은 기능을 포함한다.

  • 단순 카운팅 : 예를 들어) API 별 주요 입력 호출 수, 로그인 카운팅
  • 키에 따른 값의 계산 : 예를 들어) 시간별 검색 수

참조

  1. [하둡] 맵리듀스(MapReduce) 이해하기 : https://12bme.tistory.com/154
  2. [MongoDB] MapReduce에 관한 정리 : https://datamod.tistory.com/122