이번에는 맵리듀스에 대해서 알아보자
하둡은 분산처리가 가능한 시스템과 분산되어 저장된 데이터를 병렬로 처리가능하게 하는 맵리듀스 프레임워크의 결합한 단어라 할 수 있다.
즉, 하둡 분산 파일 시스템(HDFS)은 대용량 파일을 지리적으로 분산되어 있는 수많은 서버에 저장하는 솔루션이며, 맵-리듀스는 분산되어 저장된 대용량 데이터를 병렬로 처리하는 솔루션이다.
맵리듀스는 대용량 데이터 처리를 위한 분산 프로그래밍 모델이다. 분산되어 있는 데이터를 분석하려고 한다. 이때 분산된 데이터를 굳이 한 곳으로 모아서 분석을 한다면, 굉장히 오래걸리고 비효율적일 것이다. 따라서 특정 데이터를 가지고 있는 데이터 노드만 분석을 하고 결과만 받는 것이 맵리듀스이다. 통합분석이 아닌, 개별분석 후 결과를 취합한다고 생각하자.
예를 들어보면, 100개의 자료를 한 명이 보는 것 보다 100명이 하나씩 보는 것이 훨씬 빠르다. 이것이 분산처리의 핵심인데, 만약 여기서 하나의 자료의 크기가 다르거나, 정확한 일의 배분이 힘들 경우를 해결해 주는 역할이 맵리듀스의 역할이라고 할 수 있다.
맵리듀스는 Map단계와 Reduce단계로 이루어져 있다.
Map은 분산되어있는 컴퓨터에서 처리하는 것이다.
Map단계에서는 흩어져 있는 데이터를 key, value로 데이터를 묶어준다.
key는 몇 번째 데이터인지, value는 값을 추출한 정보야. 예를 들면, '빅데이터'가 key라면 value는 빅데이터라는 키가 몇번 나오는지 숫자가 적혀있는 것이지.
이러한 방식으로 분산되어 있는 컴퓨터에서 각각 key와 value를 구하게 돼. 구한 후에는 통합하기 위해 통합하는 곳(Reduce)으로 보내주게 된다.
정리하면, Map은 흩어져 있는 데이터를 Key, Value의 형태의 연관성 있는 데이터 분류로 묶는 작업이다.
최종적인 통합관리를 위해 Reduce를 해주는 것이 Reduce 단계이다.
만약 A컴퓨터에서 빅데이터가 5번나오고 B컴퓨터에서 빅데이터가 10번 나왔다면, Reduce는 빅데이터가 총 15번 나왔다고 통합을 해주는 것이지. 통합이라는 자체가 줄여주는 의미가 있기 때문에 Reduce라고 쓰이는 것이다.
Reduce단계는 Map단계의 key를 중심으로 필터링 및 정렬한다. 하둡에서는 이 Map과 Reduce를 함수를 통해서 구현하고 맵리듀스 잡을 통해 제어한다.
정리하면 Reduce는 Filtering과 Sorting을 거쳐 데이터를 추출, Map 작업 중 중복데이터를 제거하고 원하는 데이터를 추출하는 작업이다.