하둡의 맵 리듀스를 이용한 분산 처리에 대한 이해

26
하하하 맵 맵맵맵하 하하하 하하 하하하 하하 하하 2017 하 3 하 20 하 맵 맵 맵

Upload: jin-wook-jeong

Post on 12-Apr-2017

215 views

Category:

Data & Analytics


2 download

TRANSCRIPT

Page 1: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

하둡의 맵 리듀스를 이용한분산 처리에 대한 이해

2017 년 3 월 20 일정 진 욱

Page 2: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

2

HDFS

Page 3: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

3

HDFS 클러스터에 파일을 저장하는 과정데이터 노드

데이터 노드

블록으로 구성됨1024MB 파일

전송하려는 파일로 64MB 단위의 블록으로 나누어 HDFS 클러스터에 저장

HDFS 클러스터

3 개 복제 본이 되도록 저장

Page 4: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

4

맵 리듀스 준비먼저 HDFS 를 이용해 분석 파일을 데이터노드에 저장해 둠

Page 5: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

5

클라이언트

분석용 파일을 분산 저장함

데이터 노드 데이터 노드분석용 파일 2) 읽고 / 쓰기 …

• 맵 리듀스를 이용해 분석할 파일이 있다면 HDFS 를 이용해 데이터노드에 분산 저장해야 함• 분산 저장 시 분석 파일 (DFSOutputStream 객체 ) 은 데이터노드에 패킷 단위로 전송 후 저장됨

네임노드

1) 파일 제어 요청 3) 데이터 노드 ( 블록 ) 를 모니터링하고 관리

HDFS 클러스터

클라이언트

슬레이브 서버

Page 6: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

6

맵 리듀스에 대한 이해맵 리듀스 아키텍처에 기반한 맵 리듀스의 처리 과정에 대한 이해

Page 7: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

7

슬레이브 서버

클라이언트

맵리듀스 준비

Job 클라이언트1) 잡 실행 요청

HDFS 클러스터2) 잡 실행을 위해 필요한 파일을 복사

Job 트래커마스터 서버

Page 8: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

8

맵리듀스 동작 전 잡 요청클라이언트 Job 트래커

마스터 서버

태스크 트래커 태스크 트래커 태스크 트래커

태스크 할당

클라이언트가 잡트래커에 잡 실행 요청을 하고 잡 트래커가 태스크트래커에 태스크를 할당합니다 .이때 태스크트래커는 잡트래커로 부터 요청 받은 개수 만큼 맵 태스크와 리듀스 태스크를 생성합니다 .

잡 실행 요청

슬레이브 서버

Page 9: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

맵 리듀스 동작

Car Taxi Truck,Auto, Taxi

Truck,Auto, Taxi,

jeep

Car Taxi Truck

Auto, Taxi Truck,

Auto, Taxi, jeep

입력 ( 빅데이터 )

스플릿팅 Car, 1Taxi, 1

Truck, 1

Auto 1,Taxi 1,Truck 1

Auto 1, Taxi 1, Jeep 1

매핑Car, 1

Taxi, 1Taxi, 1Taxi, 1

Truck, 1Truck, 1

Auto, 1Auto, 1

Jeep 1

리듀싱Car, 1

Taxi, 3

Truck, 2

Auto, 2

Jeep 1

Car, 1Taxi, 3

Truck, 2Auto, 2Jeep 1

최종결과

HDFS

셔플링

Page 10: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

10

셔플맵

/a 1/b 1/c 1/a 1

중간파일/a 1/a 1 /a 1/a 1

리듀스/a {1,1,1,1}

셔플은 맵의 데이터가 리듀스 태스크에 전달되는 과정입니다 .파티셔너로 그룹별로 나누고 , 각 그룹내 레코드 데이터를 병합정렬합니다 .중간파일의 다중 레코드를 리듀스가 읽어서 단일 레코드로 만들어 줍니다 .

Page 11: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

11

리듀스의 출력

리듀스/a {1,1,1,1}

출력 데이터/a 4

출력 데이터를 리듀스로 부터 읽어 들여 합산 결과를 만듭니다 .

Page 12: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

12

드라이버 클래스의 역할

매퍼 클래스 리듀서 클래스

맵 리듀스 잡

드라이버 클래스 실행

Page 13: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

13

매퍼 클래스 구현Public class Mapper<KEYIN, VALUEIN, KEYOUT, VAL-UEOUT> { … run 메서드에서 map 메서드 호출하여 맵 태스크 수행}

Page 14: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

14

리듀서 클래스 구현Public class Reducer<KEYIN, VALUEIN, KEYOUT, VAL-UEOUT> { … run 메서드에서 reduce 메서드 호출하여 reduce 태스크 수행}

Page 15: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

15

리듀서 클래스의 역할

정렬 리듀스

예 /a {1,1,1,1}

셔플

• 셔플 단계에서는 리듀서가 각 매퍼에서 정렬된 출력을 가져옵니다 .• 정렬 단계에서는 보조 정렬 (secondary sort) 을 수행해 출력 데이터를 만듭니다 .• 리듀스 단계에서는 reduce 메서드가 정렬된 입력 데이터를 집계해 RecordWriter 를 이용해 쓰기합니다 .

Page 16: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

16

맵 리듀스 잡의 실행맵 리듀스 잡 잡트래커

태스크트래커 태스크트래커 태스크트래커

스케쥴러

잡트래커가 잡 초기화를 위해 설정을 진행1. JoblnProgress 를 생성해 잡 모니터링2. JoblnProgress 를 큐에 등록

태스크 할당

태스크 처리가 끝나면 태스크트래커가 잡트래커에게 하트비트 ( 완료된 태스크 정보 ) 를 전송함

Page 17: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

17

정렬과 조인분산 환경에서 데이터를 정렬하거나 조인할 때 맵 리듀스의 동작

Page 18: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

18

정렬

리듀스/a {1,1,1,1}

출력/a 4

리듀스/b {1,1,1,1}

출력/b 4

… …

정렬 최종 결과/a 4/b 4

Page 19: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

19

보조 정렬

복합키 정의 복합키를 이용한Comparator 정의 파티셔너 정의 그룹핑키를 이용한

Comparator 정의

Page 20: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

20

보조 정렬 시 사용할 클래스

매퍼 클래스 리듀서 클래스 정렬 클래스 드라이버 클래스

Page 21: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

21

조인

테이블 A 테이블 B

RDBMS 의 JOIN 을 맵리듀스로 구현할 수 있음

Page 22: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

22

맵 사이드 조인

분산 캐시 매퍼이용

태스크 트래커 마다 동일한 조인 코드와 설정 복사 매퍼이용ver 0.18 전

ver 0.18 후

0.18 버전 이후에는 매퍼가 분산 캐시를 이용해 맵 사이드 조인을 수행

Page 23: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

23

분산 캐시

태스크트래커는 HDFS 에서 캐시 파일을 로컬에 받아 두고 태스크 수행시 사용하고 잡이 끝나면 삭제

데이터노드

잡트래커

데이터노드

잡트래커

슬레이브 서버

데이터노드

잡트래커

HDFS 클러스터의 데이터노드

Page 24: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

24

클러스터 구성하둡의 클러스터 구축과 운영 방법에 대하여

Page 25: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

25

클러스터 구성마스터 서버

슬레이브 서버

네임노드 , 잡트래커 , 보조네임노드를 설치하는 서버

데이터노드와 태스크트래커를 설치하는 서버

Page 26: 하둡의 맵 리듀스를 이용한  분산 처리에 대한 이해

26

네임 노드 HA

네임 노드

데이터 노드 데이터 노드 데이터 노드

태스크 할당

네임 노드를 고 가용성을 가지도록 HA(high availability) 로 구성합니다 .- 하둡 0.21 버전에서 네임 노드에 대한 백업 노드를 제공하고 있습니다 .- 하둡 2 에서는 네임 노드의 HA 를 제공하고 있습니다 .

백업 노드

블록블록 단위로 조회

슬레이브 서버

마스터 서버 백업 서버