ch7-MapReduce(개념)

Download Report

Transcript ch7-MapReduce(개념)

맵리듀스
Yonsei University
2nd Semester, 2014
Sanghyun Park
* The slides are from the book “시작하세요! 하둡 프로그래밍:
기초부터 실무까지 하둡의 모든 것” written by 정재화 (위키북스, 2012)
목차

맵리듀스 개념

맵리듀스 시스템 구성
맵리듀스 개념 (1)

맵리듀스 프레임워크를 이용하면 대규모 분산 컴퓨팅 혹은 단일 컴
퓨팅 환경에서 개발자가 대량의 데이터를 병렬로 분석할 수 있음

개발자가 맵리듀스 알고리즘에 맞게 분석 프로그램을 개발하면, 데
이터의 입출력과 병렬 처리 등 기반 작업을 프레임워크가 알아서
처리해 줌

맵리듀스 프로그래밍 모델은 단순하게 맵(Map)과 리듀스(Reduce)
라는 두 개의 메서드로 구성됨. 두 메서드는 다음과 같은 동작을 수
행함
맵: list(k1, v1)  list(k2, v2)
리듀스: list(K2, list(v2))  list(k3, v3)
맵리듀스 개념 (2)

맵 메서드는 키(k1)와 값(v1)으로 구성된 데이터를 입력 받아, 이를
가공하고 분류한 후 새로운 키(k2)와 값(v2)으로 구성된 목록을 출
력함

이 때 맵 메서드가 반복해서 수행되다 보면 새로운 키(k2)를 가지는
여러 개의 데이터가 만들어짐. 새로운 키(K2)로 그룹핑된 값의 목
록(list(v2))을 리듀스 메서드의 입력 데이터로 전달함

리듀스 메서드는 값의 목록(list(v2))에 대한 집계 연산을 실행해 새
로운 키(k3)와 값(v3)으로 구성된 목록을 생성함

맵리듀스를 사용하여 “read a book”과 “write a book” 이라는 두
줄의 문장으로 구성된 텍스트 파일을 입력 받아 각 단어의 출현 빈
도를 분석(계산)하는 프로그램을 작성하려 함

전체 분석 과정은 다음 그림과 같음
맵리듀스 개념 (3)
맵리듀스 개념 (4)
[ 단어 빈도수 분석 과정 ]
1.
맵리듀스는 입력 파일을 키와 값 형식의 데이터로 분리함.
이 예제에서 키는 라인 번호이고 값은 문장임
2.
키와 값 형식의 데이터는 맵 메서드의 입력 데이터로 전달됨
3.
맵 메서드는 라인 번호별로 문장을 체크해 단어 별로 빈도수를 출
력함
4.
맵리듀스는 맵 메서드의 출력 데이터를 정렬하고, 병합함
5.
4번의 결과가 리듀스 메서드의 입력 데이터로 전달됨
6.
리듀스 메서드는 새로운 키인 단어별로 각 단어의 빈도수를 합산해
서 출력함
7.
리듀스 메서드의 출력 데이터를 하둡 파일 시스템에 저장함
맵리듀스 시스템 구성 (1)

맵리듀스 시스템은 클라이언트, 잡트래커, 태스크트래커로 구성됨.
다음 그림은 맵리듀스 시스템의 구성을 나타낸 것임
맵리듀스 시스템 구성 (2)

클라이언트는 사용자가 실행한 맵리듀스 프로그램과 하둡에서 제
공하는 맵리듀스 API를 의미함

사용자는 맵리듀스 API로 맵리듀스 프로그램을 개발하고, 개발한
프로그램을 하둡에서 실행할 수 있음

클라이언트가 하둡으로 실행을 요청하는 맵리듀스 프로그램을 잡
(job)이라는 하나의 작업 단위로 관리함
맵리듀스 시스템 구성 (3)

잡트랙커는 하둡 클러스터에 등록된 전체 잡의 스케줄링을 관리하
고 모니터링 함

전체 하둡 클러스터에서 하나의 잡트래커가 실행되며, 보통 네임노
드 서버에서 실행됨

사용자가 새로운 잡을 요청하면 잡트래커는 잡을 처리하기 위해 몇
개의 맵과 리듀스를 실행할지 계산함

이렇게 계산된 맵과 리듀스를 어떤 태스크트래커에서 실행할지 결
정하고, 해당 태스크트래커에 잡을 할당함
맵리듀스 시스템 구성 (4)

태스크트래커는 데이터노드에서 실행되는 데몬이며, 잡트래커가
요청한 맵과 리듀스 개수만큼 맵 태스크와 리듀스 태스크를 생성함

맵 태스크와 리듀스 태스크가 생성되면 새로운 JVM을 구동해 맵
태스크와 리듀스 태스크를 실행함

잡트래커와 태스크트래커는 하드비트라는 메서드로 네트워크 통신
을 하면서 태스크트래커의 상태와 작업 실행 정보를 교환함

만약 태스크트래커에 장애가 발생하면 잡트래커는 다른 대기 중인
태스크트래커를 찾아 태스크의 재실행을 요청함