본문 바로가기

Computer Science/Bigdata(hdoop, spark, hive)

[Hadoop/Spark] MapReduce란 무엇인가?(Mapper, reducer)

반응형

MapReduce란?

Apache Hadoop MapReduce는 방대한 양의 데이터를 처리하는 작업을 작성하기 위한 소프트웨어 프레임워크이다. 입력 데이터는 독립적인 청크로 분할된다. 각 청크는 클러스터의 노드에서 동시에 처리된다. MapReduce 작업은 두 함수로 구성된다.

  • Mapper: 입력된 데이터를 소비하고 분석하며(일반적으로 필터 및 정렬 작업) 튜플을 내보낸다.(키-값 쌍)
  • Reducer: mapper에서 나온 튜플을 소배하고 매퍼 데이터에서 더 작고 결합된 결과를 생성하는 요약 작업을 수행한다.

분산처리를 하기 좋은 형태로 만들어 처리한다고 생각하면 쉽다.

Spark도 MapReduce처리 방식을 지원한다.

예시를 통한 설명

다음 WordCount 예시를 보면 각 단계가 어떤일을 하는지가 좀 더 잘 이해된다.

Input: 큰 RAW 텍스트 데이터

Input Splits: 분산처리시 노드에 분배하기 위해 데이터 분할

Mapping: mapper에 의해서 key-value 형태로 데이터 처리

Shuffling: 동일한 key로 처리하기 위해 같은 key를 가진 데이터를 모음

Reducer: 사용자가 정의한 방법으로 데이터를 추출하는 작업, 아래 예시에서는 동일한 key(단어)를 가진 row의 숫자를 카운트

역시 MR 예시는 WordCount가 국룰

 

간단하게 다시 정리하면

Map: 인풋 데이터를 가공하여 연관성 있는 데이터들로 분류하는 작업

Reduce: map에서 전달된 데이터에서 원하는 데이터를 추출(Extract)하는 작업

반응형