욱'S 노트

MapReduce 개요 본문

Programming/Hadoop

MapReduce 개요

devsun 2014. 12. 22. 10:16

다음으로 살펴볼 내용은 MapReduce 이다. 이 넘이 아마 분산처리를 주도하는 기술이 아닐까 싶다.


1. 개요 


그럼, MapReduce란 무엇인가? 


MapReduce는 대량의 클러스터에서 대량의 데이터를 병렬로 처리하는 어플리케이션을 쉽게 만들 수 있도록 도와주는 소프트웨어 프레임워크이다.


공식사이트의 정의를 빌어보자면, 아마 이 넘이 병렬 및 대량처리에 핵심인듯 하다. 대충 돌아가는 개요를 보면 아래와 같다.


MapReduce 작업은 일반적으로 입력데이터를 map task의 처리에 의해 독립적인 chunk들로 분할을 한다. 프레임워크는 해당 map의 출력의 정렬된 경과를 reduce task의 입력으로 전달한다. 통상적으로 작업의 입력과 출력 모두 파일시스템에 저장되고, 프레임워크는 task의 스케쥴링, 모니터링 및 실패된 task의 재실행을 담당한다.


통상적으로 계산하는 노드와 저장하는 노드는 같다. MapReduce 프레임워크와 HDFS는 같은 노드 집합에서 수행된다.이러한 설정은 프레임워크가 데이터의 현재와 결과 클러스터에 매우 강하게 결합되어 task를 효과적으로 스케쥴할 수 있다.


MapReduce 프레임워크는 전체에 하나의 master ResourceManager, 클러스터 노드당 하나의 slave NodeManager 그리고 어플리케이션당 MRAppMaster로 구성된다.


최소한 어플리케이션은 입력/출력 위치를 명시해야하며, 적절한 map과 reduce 기능을 제공해야 한다.


Hadoop 작업 클라이언트는 ResourceManager에 작업과 작업에 대한 설정을 제출하고, Resourcemanger는 slave들로 소프트웨어와 설정을 분배하고, ResourceManager는 task를 스케쥴링 및 모니터링을 하고 상태와 진단 정보를 작업클라언트에 제공한다.


2. 입력과 출력


MapReduce 프레임워크는 상화배타적인 <key, value> 쌍으로 동작한다. 즉, 프레임워크는 작업의 입력된 <key, value> 쌍을 다른 타입의 <key, value> 쌍으로 출력한다.


Key와 Value의 클래스들은 프레임워크에 의해 직렬화되어야 하므로 Writable 인터페이스를 구현해야 한다. 또한 Key 클래스들은 프레임워크에 의해 정렬이 되어야 하므로, WritableComparable 인터페이스를 구현하여야 한다.


(input) <k1, v1> -> map -> <k2, v2> -> combine -> <k2, v2> -> reduce -> <k3, v3> (output)


먼말이지 모르겠다. 역시 소스를 봐야 겠다.


'Programming > Hadoop' 카테고리의 다른 글

Hadoop - 클러스터 세팅  (0) 2015.03.20
MapReduce 시작하기  (0) 2014.12.22
HDFS - FileSystem API 맛보기  (0) 2014.12.18
HDFS 개발 시작하기(java)  (0) 2014.12.18
HDFS 개요  (0) 2014.12.17
Comments