posted by 권오성의 Biomedical Engineering 2014. 8. 22. 14:27

-리듀스(Map-Reduce)는 구글이 분산 컴퓨팅을 지원하기 위한 목적으로 제작하여, 2004년 발표한 소프트웨어 프레임워크입니다. 이 프레임워크는 대용량 데이터를 신뢰할 수 없는 컴퓨터로 구성된 분산 클러스터 환경에서 대규모 데이터를 병렬로 처리하기 위해 개발되었습니다.

 

-리듀스의 혁신적인 부분은 데이터 집합에 대한 쿼리를 입력 받아, 분할 한 후, 여러개의 노드에서 병렬로 처리하는데 있습니다. 이러한 분산 처리는 단일 장비에서 처리하기에는 부적합한 대규모 데이터 처리 문제를 해결합니다.

 

 [ 분산 환경에서의 Map-Reduce 실행 ]

 

위의 그림은 네임노드(NameNode)의 잡트랙커(JobTracker)가 데이터노드(DataNode)의 테스크트랙커(TaskTracker)에게 일을 분배해 주는 개념도입니다. 데이터노드는 컴퓨터 한대라고 생각하시면 되며, -리듀스 함수들은 컴퓨터 마다 상주하여 병렬로 작업을 수행함으로써 대규모 데이터를 짧은 시간안에 처리할 수 있습니다.

 

 

SMAQ (Storage, Map-Reduce and Query) 시스템

-리듀스가 널리 활용되기 시작하면서 스토리지(Storage), -리듀스(Map-Reduce), 쿼리(Query) 레이어로 구성된 빅데이터 시스템 스택(Stack)이 탄생하였습니다. SMAQ 시스템은 오픈소스로 일반 범용 하드웨어에서 분산 운용되는 것을 특징으로 합니다.

  

[ SMAQ 시스템 ]

 


리눅스(Linux), 아파치(Apache), MySQL, PHP 레이어로 구성된 범용 LAMP(Linux, Apache, MySQL, PHP) 스택이 웹 애플리케이션의 지평을 바꾸어 놓은 것과 마찬가지로 SMAQ 시스템은 빅데이터 처리의 지평을 확대하는데 큰 역할을 하고 있으며, 데이터 중심의 제품 및 서비스의 새로운 시대를 선도할 것입니다.

 

 

-리듀스(Map-Reduce)의 개념

-리듀스는 맵 단계와 리듀스 단계로 처리 과정을 나누어 작업합니다. (map)은 흩어져 있는 데이터를 관련 있는 데이터끼리 묶는 작업을 통해서 임시 데이터 집합으로 변형되며, 리듀스(Reduce)는 맵 작업에서 생성된 임시 데이터 집합에서 중복 데이터를 제거하고 원하는 데이터를 추출하는 작업을 진행합니다.

 

 

  

[ Map-Reduce 작업 ]

 

 -리듀스 처리 순서

맵리듀스가 분산, 병렬 처리하기 좋은 이유는 입력 데이터에 대한 맵 함수는 동시에 독립적으로 병렬 처리할 수 있는 구조이기 때문입니다. 다음 그림을 통해서 맵-리듀스 작업 순서에 대해서 알아보겠습니다.

  

[ -리듀스 처리 방법 ]

 

 

 분할(Splitting)

입력 파일의 값을 라인 단위로 분할합니다.

 

 매핑(Mapping)

분할된 라인 단위 문장을 맵(Map) 함수로 전달하면, 맵 함수는 공백을 기준으로 문자를 분리한 후에 단어의 개수를 계산합니다. 맵 함수를 거치면서 임시 데이터 결과가 메모리에 저장됩니다.


 셔플링(Shuffling)

메모리에 저장되어 있는 맵 함수의 출력 데이터를 파티셔닝과 정렬을 해서 로컬 디스크에 저장한 후에 네트워크를 통해 리듀서의 입력 데이터로 전달합니다.


 리듀싱(Reducing)

리듀스(Reduce) 함수는 단어 목록들을 반복 수행하면서 합을 계산하여 표시합니다.

 

 

-리듀스의 문제점

최근까지 하둡은 HDFS의 대규모 데이터를 처리하는 계층으로 맵-리듀스를 선택했습니다. 하지만 최근 소개된 차세대 하둡으로 알려진 얀(YARN, Yet Another Resource Negotiator)은 하둡 환경의 맵-리듀스에 대한 의존성을 제거하였습니다.

이러한 변화에는 맵-리듀스가 가지고 있는 확장성 문제와 처리 속도가 느리다는 제약사항 때문입니다. -리듀스의 이러한 한계로 인하여 많은 개발업체들이 속도 향상를 위하여 다른 방법을 생각하도록 유도하였습니다. ( 예를 들면 IBM의 어댑티브 맵-리듀스(Adaptive Map-Reduce)을 들수 있다.)

  

[ 하둡 2.0 스택 ]

 

위의 그림을 보시면 하둡 2.0에서는 클러스터 리소스 관리(Cluster Resoruce Management)를 맵-리듀스 대신에 얀(YARN)이 담당하고 있습니다. 얀은 기존의 맵-리듀스 API와의 호환성을 유지하면서도 타 회사에서 개발된 다양한 도구에서도 실행될 수 있도록 확장성을 부여하였습니다. 이를 통해서 속도가 느린 맵-리듀스의 단점을 해결할 수 있는 기반을 마련한 것입니다.