티스토리 뷰

Development/Big Data

[Hadoop] Map Reduce

Junchoi 2019. 12. 27. 02:40

Map Reduce는 하둡 클러스터의 데이터를 처리하기 위한 분산 프로그래밍 모델로써 대용량 데이터를 분산 컴퓨팅 환경에서 병렬로 처리하게 해줍니다.

 

Map과 Reduce라는 두개의 메소드로 구성되어있으며 각 메소드는 프로그래머가 직접 작성하여 원하는 기능에 맞게 데이터를 처리할 수 있습니다.

 

Map에서는 key-value 형식의 데이터를 읽어들여 필터링하거나 다른 값으로 변환하여 key-value의 list를 출력하는 작업을 수행합니다.

 

Reduce에서는 Map에서 나온 결과값(key-value list)을 사용하여 새로운 key 기준으로 그룹화하고 집계연산을 수행하여 결과를 key-value의 list로 출력해줍니다. 이는 중복되는 데이터를 제거하고 원하는 데이터를 추출하는 작업으로서 RDBMS의 SQL에서 사용하는 SELECT, GROUP BY를 사용하는 연산과 유사합니다.

 

Map 이전에는 입력 데이터를 한 줄씩 자르는 Split을 먼저 수행하고 Map 수행 이후에는 결과 값의 key를 기준으로 정렬하는 Suffle을 수행한 후 Reduce로 전달합니다. 하지만 Split과 Suffle은 Map과 Reduce의 보조 역할로서 데이터를 처리하는 핵심은 Map과 Reduce 입니다.

 

이렇게 컴퓨터가 처리하기에 단순한 두 개의 메소드를 병렬적으로 처리하여 데이터의 처리 속도를 향상시켜줍니다. 단순하기 때문에 사용이 편리하지만 복잡한 연산을 수행하기는 어려운 단점이 있습니다.

 

 

※Map Reduce의 작업단위

하둡 version 1에서의 Map Reduce의 작업단위는 job, version 2에서는 application으로 이름은 다르지만 서로 동일한 개념입니다. 여기서는 작업단위를 job으로 통일해서 사용하겠습니다.

 

Job Tracker & Task tracker

Map Reduce의 job들은 Name node에 위치한 Job Tracker라는 소프트웨어 데몬에 의해 제어됩니다.

 

Job Tracker의 역할은 클라이언트에게 Job을 받으면 다른 Data node들에게 Map Reduce task를 할당해줍니다.

 

Data node들은 Task Tracker를 가지고 있으며 이 Task Tracker가 Map Reduce task를 인스턴스화하고 진행 상황을 Job Tracker에게 보고하는 작업을 수행합니다.