구글의 최고 레벨(LV11)에 계시는 두 분 중 한 명인 제프 딘에 대해 찾아보다가 알게 된 맵리듀스!
제프 딘에 대해 궁금하다면? 아래 링크 클릭!
맵리듀스란?
맵리듀스 = 맵(Map) + 리듀스(Reduce)
구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작하여 2004년 발표한 소프트웨어 프레임워크이다.
하둡에서 사용하는 병렬 처리 개념이고, 작업자를 클러스터라고 한다.
맵(Map)이란?
키와 밸류 값을 쌍으로 저장하는 자료구조
중복을 허용하지 않는다.
리듀스(Reduce)란?
맵을 정리해 나가는(줄여나가는) 방법
키를 기준으로 개수를 센다든지, 같은 키를 기준으로 밸류를 모두 더하거나, 평균을 내거나 하는 것들이 있다.
빅데이터에서 프로세스는 최대한 단순해야 한다.
프로세스를 간단하기 위해서는 기준이 되는 값을 하나로 잡아야 한다.
맵의 key값을 이용하면 정렬과 그룹화를 간편하게 할 수 있다.
맵리듀스 Job은 JobTracker에 의해 제어된다.
JobTracker는 마스터 노드에 존재한다.
JobTracker가 클러스터의 다른 노드들에 맵과 리듀스 task를 할당한다.
맵리듀스는 다음의 과정으로 이루어진다.
Input -> Splitting -> Mapping -> Shuffling -> Reducing -> Final Result
Input : 데이터를 입력하는 과정
Splitting : 데이터를 쪼개어(splitting) HDFS(Hadoop Distributed File System)에 저장하는 과정
Shuffling : 맵 함수의 결과를 취합하기 위해 리듀스 함수로 데이터를 전달하는 과정. 맵 태스크와 리듀스 태스크의 중간 단계.
Reducing : 모든 값을 합쳐서 우리가 원하는 값을 추출하는 과정
맵리듀스의 장점
- 단순하고 사용이 편리
- 특정 데이터 모델이나 스키마 정의, 질의 언어에 의존적이지 않아 비정형 데이터 모델을 유연하게 지원 가능
- 저장 구조와 독립적
- 확장성이 높음
맵리듀스의 단점
- 복잡한 연산이 어렵다.
- 기존 DBMS가 제공하는 스키마, 질의 언어, 인덱스 등의 기능을 지원하지 않는다. (비정형 데이터 위주)
- 상대적으로 성능이 낮다. 예를 들면, 모든 Map과정이 진행될 때까지 Reduce는 시작될 수 없다.
즉, 맵리듀스는 병렬로 데이터를 처리하지만 자기 자신을 병렬로 수행할 수 없다.
댓글