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 : 효과적인 데이터 공유 방법이 없음.
'Dev Study > BigData' 카테고리의 다른 글
3. 빅데이터 배치 분석 및 대화형 질의(1) - 배치분석 (0) | 2019.04.18 |
---|---|
Spark Test (0) | 2019.04.12 |
Hadoop 설치(2.7.7) (0) | 2019.04.12 |
2. 빅데이터 처리 시스템 개요 및 예시(3) - Spark 개요 (0) | 2019.04.12 |
2. 빅데이터 처리 시스템 개요 및 예시(1) - 데이터 처리 개요 (0) | 2019.04.09 |