slide-image

MapReduce Programming Model란

  -> 다양한 형식의 대용량 데이터를 병렬 처리하는데에 효과적인 도구. 보통 두 가지의 function으로 나누어 처리하고 있음. 
  -> Map Process : 여러 데이터 노드에 분산 저장된 데이터를 각 서버에서 병렬로 나누어 처리하며

  -> Reduce Process : 맵 프로세스들의 결과를 조합해 최종 결과를 나타냄 

ex)

1) Map function : 입력으로 하나의 key/value쌍을 받아 여러 개 or 한 쌍의 key/value를 만들어내는 함수

2) Redcue function : 같은 중간 key를 갖는 여러 중간 값들을 합해 어떤 함수를 수행

 

 

WordCount 예제

 

Problem : 아주 많은 document 들이 있을 때 각 단어가 얼마나 나왔는지 계산하여라

 

Map 함수(입력 word -> (word,1)) :word가 1번 들어왔다는 것을 출력하는 lambda 함수

Reduce 함수(입력 a,b -> (a+b)) : 각 count가 들어왔을 때 합하여 반환 하는 lambda 함수

 

 

1) Logical Plan

     -> 이 Logical Plan이 수행되려면 먼저 Physical Plan으로 바뀌어야 함

 

2) Physical Plan

-> Reduce Task가 모든 Map Task에서 값을 받아와 처리하는데 이것을 Shuffle이라고 함.

 

 

예를 들어 보자.

 

Input : Apple Pear Orange, Orange Grapes, Apple Mango Pear, Apple Apple Mange

Map : 각 과일이 몇 번 입력됐다는 것을 출력

Reduce1 : 알파벳 A부터 G까지의 중간값을 받음

Reduce2 : 나머지 알파벳의 중간값을 받음

 

각 Map function을 거친 key, value 값들이 조건에 맞는 Reduce function을 거치면 각각 (Apple, 4), (Grapes,1) / (Mangom,2), (Orange,2), (Pear,2) 라는 값을 출력하게 된다.

 

 

 

-> 위와 같은 Application을 수행하는 시스템 부분을 MapRduce Runtime이라고 함. (Physical Plan을 수행하는 과정)

 

MapReduce Runtime

-> 이 Runtime은 물리적인 수행 계획에 해당하는 부분을 각각 여러 Task executor에 보내어 수행한다.

*장점

1) Scheduling : 하나의 Job을 어떻게 수행할지 Runtime에서 알아서 해결해줌

2) Fault Tolerence : 수행 중 특정 task가 죽었을 때 복구해 수행함.

3) Scalability : Data가 많아질수록 더 많은 Task를 사용해 빠르게 처리

4) Elasticity : 가용한 자원이 실시간으로 바뀔 때 최대한 적절하게 활용할 수 있도록 해줌

 

*제한성

1) Limited Programming Felxibility : 복잡한 여러 단계를 거치는 알고리즘을 표현하기에는 비효율적임

2) No efficient primitives for data sharing : 효과적인 데이터 공유 방법이 없음.