Map Reduce

Architecture 2008.05.14 21:25

구글의 검색 엔진의 기본 핵심이다.

 

functional langaue인 lisp에 영향을 받은것으로 보이며, 간단 명료하게 병렬 배취기능형태로 제공된 것으로 보인다.

 

홈페이지 및 출처는 다음과 같다.

 

http://labs.google.com/papers/mapreduce.html

 

 MapReduce: Simplified Data Processing on Large Clusters
Jeffrey Dean and Sanjay Ghemawat

 

 

아주 간단한 input/output 프로그래밍 api를 가지고 있다.

 

 map (in_key, in_value) -> list(out_key, intermediate_value)

reduce (out_key, list(intermediate_value)) -> list(out_value)

 

이런식으로 구글 소스 트리에 사용되는데. 계속 사용되고 있다..

 

 

 

실행에 대한 개념이다.  중간값이 만들어지고, 그룹된 Key에 의해서 그룹되어서 결과를 나오게 한다.

 

 

 

 

 

 

이를 이용해서 병렬처리는 다음과 하게 되어 있다.

 

 

좀더 쉽게 설명되면 다음과 같다. (출처 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/JCvs/Search/Document/ManReduce?action=download&value=mapreduce.png)


 

 

자연스럽게 시간에 대한 pipe개념도 추가되어 있다.

 

또한 재실행하는 문제에 대한 문제까지도 고려하고 있다.

 

기본 데이터가 없어서 성능쪽은 비교대상이 없기 때문에 쉽게 말하기는 어려운 것 같다.

 

관련한 논문은 다음과 같다.

  • Programming model inspired by functional language primitives
  • Partitioning/shuffling similar to many large-scale sorting systems
    • NOW-Sort ['97]
  • Re-execution for fault tolerance
    • BAD-FS ['04] and TACC ['97]
  • Locality optimization has parallels with Active Disks/Diamond work
    • Active Disks ['01], Diamond ['04]
  • Backup tasks similar to Eager Scheduling in Charlotte system
    • Charlotte ['96]
  • Dynamic load balancing solves similar problem as River's distributed queues
    • River ['99]

 

결론은 다음과 같이 내었는데..

 

 . MapReduce has proven to be a useful abstraction
  • Greatly simplifies large-scale computations at Google
  • Fun to use: focus on problem, let library deal w/ messy details
  •  

     

    추상적인 모델로서 증명되었고, 구글에서 큰 스케일의 계산을 심플화했고, 문제에 포커스를 가지도록 하고, 복잡한 것은 그냥 라이브러리에서 실행할 수 있도록 하였습니다.

     

     

    참조자료.

    http://ypshin.com/2690309

    http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/MapReduce

     

     

    개인적으로 병렬처리를 하는 백엔드 worker, batch 작업에 써먹을 수 있는 형태로 보인다. 간략함으로서 사용자에게 편의를 제공하는 것으로 보인다.

     

     

    Hadoop 은 바로 이 MapReduce를 구현하였다. http://hadoop.apache.org/core/

    분산 파일 시스템 Hadoop가 MapReduce 를 구현했다고 보니. 많이 놀랬다.

     

     

     

     

    자세한 것은 다음에.. ㅋ

     

    참조 자료

    http://hadoop.apache.org/core/docs/current/ Hadoop 위키 페이지

    http://freesearch.pe.kr/893 속도 테스트

     

     

    Posted by 김용환 '김용환'