MapReduce는 2004년에 구글에서 발표한 데이터 처리 알고리즘입니다.
Hadoop의 MapReduce는 구글이 발표한 MapReduce 논문을 자바로 구현한 애플리케이션이라고 생각하면 됩니다.
MapReduce의 뜻은 함수형 프로그래밍에서의 map 함수와 reduce 함수의 합성어인데요.
구체적으로 map은 'collection에 있는 모든 원소에 적용되는 변환 함수'라고 할 수 있으며, reduce는 '각 원소에 집계함수를 적용하는 함수'라고 알고 넘어가면 되겠습니다.
하둡을 처음 공부하게 되면, 너무 많은 용어가 혼재되어 다가오기때문에 굉장히 어지럽고 복잡하게 느껴지실텐데요.
저의 이해를 위해서 최대한 간단하게 간추려서 직관적으로 설명하겠습니다. 따라서 틀린 내용이 있다면, 남겨주신다면 수정 반영하겠습니다 :)
원래는 InputSplit이라는 개념과 이에 대응하는 Block에 대해서 다루고 넘어가는 것이 맞겠으나, 당장은 Map과 Reduce에 집중하겠습니다.
아래의 그림은 Map Reduce를 단편적으로 보여주는 예시입니다.
어떠한 input이 들어왔고, 이 input이 map이라는 블록으로 3개로 쪼개져서 분리가 됩니다. 그리고 이 3개의 map 블록을 거친 결과값은 2개의 reduce 블록으로 취합이 되고, 마지막으로 reduce의 결과값이 하나의 output으로 취합되는 그림을 볼 수 있습니다.
가장 대표적인 Map Reduce의 예제를 보겠습니다.
아래는 MapReduce Word Count라는 예제인데요.
텍스트 라인이 3개로 쪼개지고, 쪼개진 뒤 map을 통해 데이터가 key, value 형태로 변환됩니다.
변환된 텍스트 중 중복되는 것이 있다면 각 블록별로 통합(combine) 되는데요.
이후에 shuffle을 통해 각 단어별로 묶어 밸류 값을 할당하게 됩니다.
이것을 reduce 집계 함수 파트를 거치며 총 개수가 취합되며
output으로 각각의 단어가 'key-value쌍'으로 하나로 취합되어 저장됩니다.
'빅데이터 > 하둡' 카테고리의 다른 글
[M1 맥북] 하둡(hadoop) 설치 (0) | 2023.02.16 |
---|---|
[M1 맥북] Java 설치 / 재설치 방법 / 삭제 방법 (0) | 2023.02.16 |