하둡의 맵 리듀스를 이용한 분산 처리에 대한 이해
TRANSCRIPT
하둡의 맵 리듀스를 이용한분산 처리에 대한 이해
2017 년 3 월 20 일정 진 욱
2
HDFS
3
HDFS 클러스터에 파일을 저장하는 과정데이터 노드
데이터 노드
…
블록으로 구성됨1024MB 파일
전송하려는 파일로 64MB 단위의 블록으로 나누어 HDFS 클러스터에 저장
HDFS 클러스터
3 개 복제 본이 되도록 저장
4
맵 리듀스 준비먼저 HDFS 를 이용해 분석 파일을 데이터노드에 저장해 둠
5
클라이언트
분석용 파일을 분산 저장함
데이터 노드 데이터 노드분석용 파일 2) 읽고 / 쓰기 …
• 맵 리듀스를 이용해 분석할 파일이 있다면 HDFS 를 이용해 데이터노드에 분산 저장해야 함• 분산 저장 시 분석 파일 (DFSOutputStream 객체 ) 은 데이터노드에 패킷 단위로 전송 후 저장됨
네임노드
1) 파일 제어 요청 3) 데이터 노드 ( 블록 ) 를 모니터링하고 관리
HDFS 클러스터
클라이언트
슬레이브 서버
6
맵 리듀스에 대한 이해맵 리듀스 아키텍처에 기반한 맵 리듀스의 처리 과정에 대한 이해
7
슬레이브 서버
클라이언트
맵리듀스 준비
Job 클라이언트1) 잡 실행 요청
HDFS 클러스터2) 잡 실행을 위해 필요한 파일을 복사
Job 트래커마스터 서버
8
맵리듀스 동작 전 잡 요청클라이언트 Job 트래커
마스터 서버
태스크 트래커 태스크 트래커 태스크 트래커
태스크 할당
클라이언트가 잡트래커에 잡 실행 요청을 하고 잡 트래커가 태스크트래커에 태스크를 할당합니다 .이때 태스크트래커는 잡트래커로 부터 요청 받은 개수 만큼 맵 태스크와 리듀스 태스크를 생성합니다 .
잡 실행 요청
슬레이브 서버
맵 리듀스 동작
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
셔플링
10
셔플맵
/a 1/b 1/c 1/a 1
중간파일/a 1/a 1 /a 1/a 1
리듀스/a {1,1,1,1}
셔플은 맵의 데이터가 리듀스 태스크에 전달되는 과정입니다 .파티셔너로 그룹별로 나누고 , 각 그룹내 레코드 데이터를 병합정렬합니다 .중간파일의 다중 레코드를 리듀스가 읽어서 단일 레코드로 만들어 줍니다 .
11
리듀스의 출력
리듀스/a {1,1,1,1}
출력 데이터/a 4
출력 데이터를 리듀스로 부터 읽어 들여 합산 결과를 만듭니다 .
12
드라이버 클래스의 역할
매퍼 클래스 리듀서 클래스
맵 리듀스 잡
드라이버 클래스 실행
13
매퍼 클래스 구현Public class Mapper<KEYIN, VALUEIN, KEYOUT, VAL-UEOUT> { … run 메서드에서 map 메서드 호출하여 맵 태스크 수행}
14
리듀서 클래스 구현Public class Reducer<KEYIN, VALUEIN, KEYOUT, VAL-UEOUT> { … run 메서드에서 reduce 메서드 호출하여 reduce 태스크 수행}
15
리듀서 클래스의 역할
정렬 리듀스
예 /a {1,1,1,1}
셔플
• 셔플 단계에서는 리듀서가 각 매퍼에서 정렬된 출력을 가져옵니다 .• 정렬 단계에서는 보조 정렬 (secondary sort) 을 수행해 출력 데이터를 만듭니다 .• 리듀스 단계에서는 reduce 메서드가 정렬된 입력 데이터를 집계해 RecordWriter 를 이용해 쓰기합니다 .
16
맵 리듀스 잡의 실행맵 리듀스 잡 잡트래커
태스크트래커 태스크트래커 태스크트래커
스케쥴러
잡트래커가 잡 초기화를 위해 설정을 진행1. JoblnProgress 를 생성해 잡 모니터링2. JoblnProgress 를 큐에 등록
태스크 할당
태스크 처리가 끝나면 태스크트래커가 잡트래커에게 하트비트 ( 완료된 태스크 정보 ) 를 전송함
17
정렬과 조인분산 환경에서 데이터를 정렬하거나 조인할 때 맵 리듀스의 동작
18
정렬
리듀스/a {1,1,1,1}
출력/a 4
리듀스/b {1,1,1,1}
출력/b 4
… …
정렬 최종 결과/a 4/b 4
19
보조 정렬
복합키 정의 복합키를 이용한Comparator 정의 파티셔너 정의 그룹핑키를 이용한
Comparator 정의
20
보조 정렬 시 사용할 클래스
매퍼 클래스 리듀서 클래스 정렬 클래스 드라이버 클래스
21
조인
테이블 A 테이블 B
RDBMS 의 JOIN 을 맵리듀스로 구현할 수 있음
22
맵 사이드 조인
분산 캐시 매퍼이용
태스크 트래커 마다 동일한 조인 코드와 설정 복사 매퍼이용ver 0.18 전
ver 0.18 후
0.18 버전 이후에는 매퍼가 분산 캐시를 이용해 맵 사이드 조인을 수행
23
분산 캐시
태스크트래커는 HDFS 에서 캐시 파일을 로컬에 받아 두고 태스크 수행시 사용하고 잡이 끝나면 삭제
데이터노드
잡트래커
데이터노드
잡트래커
슬레이브 서버
데이터노드
잡트래커
HDFS 클러스터의 데이터노드
24
클러스터 구성하둡의 클러스터 구축과 운영 방법에 대하여
25
클러스터 구성마스터 서버
슬레이브 서버
네임노드 , 잡트래커 , 보조네임노드를 설치하는 서버
데이터노드와 태스크트래커를 설치하는 서버
26
네임 노드 HA
네임 노드
데이터 노드 데이터 노드 데이터 노드
태스크 할당
네임 노드를 고 가용성을 가지도록 HA(high availability) 로 구성합니다 .- 하둡 0.21 버전에서 네임 노드에 대한 백업 노드를 제공하고 있습니다 .- 하둡 2 에서는 네임 노드의 HA 를 제공하고 있습니다 .
백업 노드
블록블록 단위로 조회
슬레이브 서버
마스터 서버 백업 서버