data engineering

mapreduce(맵리듀스)란?

qkqhxla1 2017. 5. 20. 13:39

맵리듀스에 대해서.


기존의 빅 데이터 방법론에서, 데이터 처리시 프로그래밍으로 저장소에서 데이터를 가져와서 처리한 후 다시 데이터를 집어넣습니다. 하지만 분산 환경에서 데이터를 가져오는데 드는 비용은 매우 큽니다. 그래서 데이터를 가져오지 않고 처리할 수 있는 방법론이 필요해졌습니다.


발상의 전환으로, 데이터를 분산 처리 저장소에서 가져오지 않고 저장된 곳에서 처리할 수 있도록 만든게 맵리듀스입니다.


맵, 리듀스는 단계의 이름이며 모두 입출력으로 키-값의 형태를 가집니다.



예제는 아래 링크의 ibm예제를 가져왔습니다.(what is mapreduce라고 구글에 치고 첫번째 링크) 이게 가장 이해가 잘 된듯.


5개의 저장소에 각각 하나씩 온도 데이터가 있다고 가정해봅시다. 그중 1개의 저장소에서 온도 데이터를 가져왔습니다.


Toronto, 20 
Whitby, 25 
New York, 22 
Rome, 32 
Toronto, 4 
Rome, 33 
 New York, 18


모든 5개의 저장소에서 온도 데이터를 가져와서 각각 도시의 최고 온도를 산출해내는게 목표입니다.

맵(map) 작업은 각각의 저장소에서 최고 온도를 산출해내는것을 말합니다.


예로 위의 온도 정보를 가지고 최고 온도를 뽑으면

(Toronto, 20) (Whitby, 25) (New York, 22) (Rome, 33) 처럼 나옵니다. 


이게 맵(map) 작업이고, 이러한 데이터가 5개가 있습니다.(5개의 저장소가 있다고 했으니.) 이 5개의 저장소에서 정제된 모든 데이터를 가져왔을경우 아래와 같다고 가정합시다.


(Toronto, 18) (Whitby, 27) (New York, 32) (Rome, 37)(Toronto, 32) (Whitby, 20) (New York, 33) (Rome, 38)(Toronto, 22) (Whitby, 19) (New York, 20) (Rome, 31)(Toronto, 31) (Whitby, 22) (New York, 19) (Rome, 30)


이게 모든 데이터가 모여있는거고, 여기서 최고 온도값만 뽑아내는 작업을 리듀스(reduce) 라고 합니다.

결과값은 이렇게 됩니다.


(Toronto, 32) (Whitby, 27) (New York, 33) (Rome, 38) 맵리듀스라는 이름에서 알수있듯이,

맵이 항상 먼저 실행되고 그다음에 리듀스가 실행됩니다.



참고링크.

https://www-01.ibm.com/software/data/infosphere/hadoop/mapreduce/


http://blog.acronym.co.kr/312

'data engineering' 카테고리의 다른 글

spark 기초.  (0) 2017.06.08
oozie workflow 기본과 삽질한 내용들  (0) 2017.06.04
docker 삽질.  (0) 2017.04.25
redis 기초.  (2) 2017.04.20
index (mongodb)  (0) 2017.04.20