상세 컨텐츠

본문 제목

맵리듀스(MapReduce) 개념 정리

Hadoop

by 견오수 2023. 7. 29. 17:57

본문

728x90

1. 맵리듀스의 개념

 

  • (Map)과 리듀스(Reduce)라는 두 가지 단계로 처리를 한다.
  • 맵은 입력 파일을 한 줄씩 읽어서 데이터를 변형(transformation)한다.
  • 리듀스는 맵의 결과 데이터를 집계(aggregation)한다.

 

2. 맵리듀스 모델의 처리 과정

 
  • 맵은 한 줄에 있는 단어 개수를 계산해 한 줄씩 출력한다. 그 후 리듀스는 맵의 출력 데이터를 집계한다.
  • : (k1, v1) → list(k2, v2)  , 리듀스 : (k2, list(v2)) → (k3, list(v3))
  • 맵은 키(k1)와 값(v1)으로 구성된 데이터를 입력 받아 이를 가공하고 분류한 후, 새로운 키(k2)와 값(v2)으로 구성된 목록을 출력한다 여러 개의 데이터 생성
  • 맵의 입력키는 각 줄 번호, 입력 값은 각 줄을 의미한다. 맵의 출력키는 단어, 출력값은 단어의 개수를 의미한다.
  • 리듀스는 새로운 키(k2)로 그룹핑된 값의 목록(list(v2))을 입력 데이터로 전달받고, 값의 목록(list(v2))에 대한 집계 연산을 실행해 새로운 키(k3)로 그룹핑된 새로운 값(v3)의 목록을 생성한다.
  • 리듀스의 입력 키는 단어이고, 입력 값은 단어 개수 목록이며, 출력키는 단어, 출력값은 단어 개수의 합계를 의미한다.

 

3. 맵리듀스 아키텍처

 

  • 맵리듀스 프레임워크는 개발자가 분석 로직을 구현하는데 집중하게 하고, 데이터에 대한 분산과 병렬 처리를 프레임워크가 전담한다.
  • 맵리듀스 프레임워크의 시스템 구성과 데이터의 흐름을 모르더라도 개발을 진행하는데 지장은 없으나, 아키텍처를 모른다면 성능을 고려하지 않은 채로 개발하게 되고, 결국에는 서비스에 사용 못할 수 도 있다.
  • 맵리듀스 시스템은 클라이언트, 잡트래커, 태스크트래커로 구성

 

3-1. 클라이언트

 

클라이언트는 사용자가  실행한 맵리듀스 프로그램과 하둡에서 제공하는 맵리듀스 API를 의미한다. 사용자는 맵리듀스 API로 맵리듀스 프로그램을 개발하고, 개발한 프로그램을 하둡에서 실행할 수 있다.

 

3-2. 잡트래커

 

  • 맵리듀스 프로그램은 잡(job)이라는 하나의 작업 단위로 관리된다.
  • 잡트래커는 하둡 클러스터에 등록된 전체 잡의 스케줄링을 관리하고 모니터링한다.
  • 보통 하둡의 네임노드 서버에서 실행된다. 그렇다고 무조건 잡트래커를 반드시 네임노드 서버에서 실행할 필요는 없다.
  • 잡트래커는 잡을 처리하기 위해 몇 개의 맵과 리듀스를 실행할지 계산한다. 이렇게 계산된 맵과 리듀스를 어떤 태스크트래커에서 실행할지 결정하고, 해당 태스크트래커에 잡을 할당한다. 
  • 태스크트래커는 잡트래커의 작업 수행 요청을 받아 맵리듀스 프로그램을 실행한다.
  • 잡트래커와 태스크트래커는 하트비트라는 메서드로 네트워크 통신을 하면서 태스크트래커의 상태와 작업 실행 정보를 주고 받게 된다. 만약 태스크트래커에 장애가 발생하면 잡트래커는 다른 대기 중인 태스크트래커를 찾아 태스크를 실행하게 된다.

3-3. 태스크트래커

 

  • 태스크트래커는 사용자가 설정한 맵리듀스 프로그램을 실행하며, 하둡의 데이터 노드에서 실행되는 데몬이다.
  • 태스크트래커는 잡트래커의 작업을 요청 받고, 잡트래커가 요청한 맵과 리듀스 만큼 맵 태스크와 리듀스 태스크를 생성한다.
  • 맵 태스크와 리듀스 태스크가 생성되면 새로운 JVM을 구동해 맵 태스크와 리듀스 태스크를 실행한다.

 

 

 

728x90

'Hadoop' 카테고리의 다른 글

HDFS 아키텍처 특징  (0) 2022.01.06
7. 빅데이터 실시간 적재 - HBase & Redis  (0) 2021.10.18
6. 빅데이터 적재 개요  (0) 2021.09.16
5. 아파치 플럼과 카프카란?  (1) 2021.09.13
4. 빅데이터 수집 개요  (0) 2021.09.13

관련글 더보기

댓글 영역