'Key-Value'에 해당되는 글 1건

최초 작성일 : 2013/02/01 17:15


==============================================

워낙에 영어 알레르기가 있는 놈이 영문 문서 보면서 발번역 하느라 토쏠립니다...ㅠ.ㅠ
이점 감안하고 보시기 바랍니다...
==============================================
우선 앞선 글(http://www.prapps.net/587)에서 위키백과에서 정의한 내용을 간단하게
적어보았다. 다음과 같은 내용이다.
구글에서 분산 컴퓨팅을 지원하기 위한 목적으로 제작하여 2004년 발표한 소프트웨어 프레임워크다. 이 프레임워크는 페타바이트 이상의 대용량 데이터를 신뢰할 수 없는 컴퓨터로 구성된 클러스터 환경에서 병렬 처리를 지원하기 위해서 개발되었다. 이 프레임워크는 함수형 프로그래밍에서 일반적으로 사용되는 Map과 Reduce라는 함수 기반으로 주로 구성된다.

현재 MapReduce는 Java와 C++, 그리고 기타 언어에서 적용이 가능하도록 작성되었다.


오늘은 여기서 약간만 더 내용을 심화 시켜 보도록 하겠다.
오늘의 글은 다음 링크에 링크된 문서에서 발췌, 번역 한 것이다.

http://research.google.com/archive/mapreduce-osdi04-slides/index.html

우선 소개 글에서 맵리듀스가 생겨나게된 배경을 설명하고 있다.
쉽게 말해

' 5년간 구글 인간들이 엄청난 양의 미가공 데이터를 파생테이터로
만들기 위해 특별한 목적의 많은 프로그램을 구현하였는데 사실 이 작업 자체는
매우 쉬운 작업이지만 이 작업을 적절한 시간에 끝내기 위해서는 분산된 많은
서버들 상에서 이루어져야 했고 이 것은 엄청 골치 아픈 일이었다.

그래서 잡다하고 복잡한 기능들(병렬화, 내고장성, 데이터 분산처리, 로드 밸런싱 등)은
라이브러리에 다 숨기고 간단하 연산만을 수행하도록 개념을 잡았다.

이러한 개념은 Lisp 및 다른 언어에서의 기본형 데이터에 대한 표현인 Map과 Reduce에서
그 영감을 얻었다.

그래서 입력값인 각각의 논리적인 레코드들을 중간형태의 key/value 형태로 만들기 위해
map을 적용 시켰고. 다시 여기에서 같은 key들을 공유하는 value들을 적절한 파생 데이터로
조합하기 위해 reduce를 적용 시켰다.

그렇다!
도대체 map이 뭐고 reduce가 뭔지 무지 궁금했는데...
바로 이거였던 것이다.

Map : 논리적 레코드를 key/value형태의 중간 데이터로 만드는 작업
Reduce : key/value 형태의 중간 데이터를 key를 중심으로 재분류하여 분석하는 작업

간단히 말하면 이런 것이다.

그리고 이렇게 만들어진 맵리듀스는

대량의 연산을 자동으로 병렬처리 및 분산처리가 가능하게 해주고, 또 그 인터페이스들의 구현들을 조합하는 경우 대량의 상업용PC(비교적 저가의 PC) 클러스터에서
고성능을 발휘할 수 있는 간단하고도 강력한 인터페이스를 만들어 낸 데에 그 의의가 있다.

이상 MapReduce에 대한 간단한 개념을 알아 보았고.

다음 시간에는 조금 더 기술적인 내용을 확인해보도록 하겠다.

블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^