Translate

Search

Map-Reduce의 개념

Map-Reduce는 흔히들 이야기하는 Big-Data의 가장 기본적인 일종의 개념이라고 볼 수 있습니다.

대용량 Data를 처리하기 위해 제시된 Model입니다.

기존의 RDBMS(Relational Database Management System)은 어느 정도의 대용량 Data를 처리하는 것에 있어서 큰 문제는 없었습니다.

하지만 지금의 Data 양은 종전과 달리 기하급수적으로 증가하였고, RDBMS가 처리하기에는 성능적인 측면에서 부족함을 보여주고있습니다.

RDBMS는 Data가 많아질 수록 원하는 Data를 검색하는데에 소요되는 시간이 길어질 수 밖에 없습니다.

이 때문에 등장한 것이 Map-Reduce입니다.

Map-Reduce로 검색을 할 때, Map과 Reduce라는 두 가지 절차를 거칩니다.

어떤 Data를 Mapping한 후 Reducing하여 결과를 도출하는 방법입니다.

Map은 Map Function을 이용해 검색 대상 내에 존재하는 모든 문장을 한 단어 단위로 쪼갭니다.

이후 쪼개진 결과를 처리하기 편한 형태로 정렬을 하게 되고, Reduce Function을 이용해 단어별로 Count하는 것이 가장 기본적인 동작 방식입니다.

아래의 그림을 참조하시면 좀 더 쉽게 이해하실 수 있습니다.


여기서는 단순히 4개의 문장으로 예를 들었지만, 실제로는 수 없이 많은 Data로 이루어집니다.

그림과 같이, 각 단어별로 나타난 숫자를 더한 결과로 가장 적합한 Data를 찾아내게 됩니다.

이 때, 단어(This, is, MR 등)은 Key가 되며, 숫자 1은 Value가 됩니다.

가장 간단하게 설명을 드리자면 예를 들어, '피자' 라는 키워드로 검색을 하게 되면 Map-Reduce 기법을 통해 '피자'라는 단어가 가장 많이 들어간 Page를 찾아주는 것이라고 생각하시면 됩니다.

즉, Pizza라는 Key의 Value 값이 가장 높은 Page입니다.

물론 해당 단어가 가장 많다고해서 사용자가 원하는 정확한 결과물이 아닐수도 있기 때문에 더 많은 수식이 들어가기는 합니다.

처음에도 언급하였던 것 처럼 Map-Reduce는 기존의 RDBMS에서 처리할 수 없었던 대용량 Data 처리를 위해 개발되었습니다.

때문에 Data가 작은 경우 검색 속도가 오히려 줄어들 수도 있습니다.

Map-Reduce를 활용한 Apache Hadoop Solution 및 실제 활용 사례는 추후에 게시하도록 하겠습니다.

0 comments:

Post a Comment