하둡2 YARN 짧게 보기

9
하둡2, YARN 짧게 보기 최범균 2014-05-16

description

하둡2의 YARN(Yet Another Resource Negotiator)에 대해 간략하게 설명한다.

Transcript of 하둡2 YARN 짧게 보기

Page 1: 하둡2 YARN 짧게 보기

하둡2, YARN 짧게 보기

최범균 2014-05-16

Page 2: 하둡2 YARN 짧게 보기

하둡1 MR 시스템의 몇 가지 단점

한 노드에서 실행할 수

있는 Map과 Reduce용

태스크 개수가 제한됨.

즉, 노드에 여유 자원이

있어도 그 자원을 활용하지 못하는 상황이 발생.

MR만 실행 가능.

클러스터의 자원 배분과 Job 관리를 함께 수행.

클러스터에서 병목 지점이 됨.

이미지 출처: http://hadoop.apache.org/

Page 3: 하둡2 YARN 짧게 보기

그래서 만든 YARN

● Yet Another Resource Negotiator

● 주요 특징 o MR1 시스템의 JobTracker가 하던 두 가지 역할-자원관리, Job 상태 관리-를 ResourceManager와

ApplicationMaster로 분리

기존 JobTracker에 몰리던 병목을 제거

o 범용 컴퓨팅 클러스터

MR 외에 다양한 어플리케이션을 실행할 수 있으며, 어플리케이션마다 자원(CPU, 메모리)을 할당받음

Page 4: 하둡2 YARN 짧게 보기

YARN의 구조

어플리케이션 마다 자원을 할당하고,

App Master를 관리한다.

클러스터에 1개

노드의 컨테이너를 관리하고 자원 상태를 RM에

통지. 노드 당 1개

어플리케이션의 실행을

관리하고 , 상태를 RM에

통지

어플리케이션 당 1개

어플리케이션을 실행. 제한된 자원을 가지고, 상태를 AM에 통지

이미지 출처: http://hadoop.apache.org/

Page 5: 하둡2 YARN 짧게 보기

YARN의 실행 흐름

1. 클라이언트가 RM에 어플리케이션 제출

2. NM를 통해 AM를 실행

3. AM은 RM에 자신을 등록

4. AM은 RM을 통해 어플리케이션을 실행할 컨테이너 할당을 요청함

5. AM은 NM에게 할당된 컨테이너를 실행하라고 요청함 (AM은 어플리케이션 실행에 필요한 정보를 NM에 제공)

6. 컨테이너에서 실행되는 어플리케이션은

상태 정보를 AM에 전송

7. 클라이언트는 어플리케이션 실행 상태

정보를 얻기 위해 AM와 직접 통신

8. 어플리케이션이 종료되면 AM은 RM에서 자신을 제거하고 셧다운 됨

이미지 출처: 호튼웍스 블로그

Page 6: 하둡2 YARN 짧게 보기

YARN에서의 MR 실행

클라이언트 노드

클라이언트 JVM

MR

프로그램 JOB

1: 잡 실행

RM 노드

Resource

Manager

2: 어플리케이션 ID 구함

HDFS

3: 잡 리소스 복사

NM 노드

Node Manager

MRAppMaster

4: 어플리케이션 제출

5.a: 컨테이너 실행

5.b: 배포

6: 초기화

7: 입력 스플릿 검색

8: 자원 할당

NM 노드

Node Manager

태스트JVM

YarnChild

Task

9a: 컨테이너 실행

9.b: 배포

10: 잡 자원 검색

11: 실행

Page 7: 하둡2 YARN 짧게 보기

실패 대상 처리 방식

태스크 * 실패-태스크 실행 중 익셉션 발생(AM에 통지), JVM 갑작스런 종료(AM에 통지), 행 걸린 태스크(핑을 통한 확인)-가 발생하면, AM은 태스크 실행을 재시도

* 최대 시행 횟수 이상 실패하면 더 이상 태스크를 실행하지 않음

* 맵과 리듀스 태스크가 일정 비율 이상 실패하면, 잡을 실패로 간주

* AM은 한 노드에서 지정 횟수 이상 태스크가 실패하면, 해당 노드에서 태스크를 실행하지 않음

어플리케이션 마스터

* AM에서 RM로 주기적인 하트비트를 보내, AM의 정상 여부 판단.

* AM이 실패로 간주되면, RM은 다른 노드에 AM을 생성하고 어플리케이션을 실행

노드 매니저 * NM는 RM로 하트비트를 보내, NM의 정상 여부 판단.

* NM가 실패로 간주되면, RM는 리소스 가용 풀에서 해당 NM를 제거하고 해당 NM에서 실행중인 태스크와 어플리케이션은 다른 노드에서 실행

리소스 매니저 * 주키퍼 기반 이중화 사용 (하둡 2.3.0 버전 기준)

YARN에서의 MR 실패 처리

Page 8: 하둡2 YARN 짧게 보기

YARN 어플리케이션 예

● YARN 기반 실행 o Storm on YARN, 호튼웍스

o HOYA (Hbase on YARN), 호튼웍스

o Spark on YARN

o Apache Giraph on YARN

● YARN 어플리케이션 개발 o Spring Hadoop 2.0 (아직 RC1 버전)

Yahoo!는 YARN 기반 Storm을 이용해서 스트림 처리

- 320개 노드, 초당 13만개 이벤트 처리, 1만 2천 쓰레드 실행 증

- 공유데이터는 1900 노드에 2PB 보관

Yahoo! 전체

- 30,000 노드가 YARN에서 동작, 하루 40만개 잡 실행

- 노드 활용에서 60~150% 향상이 있다고 함

Page 9: 하둡2 YARN 짧게 보기

정리

하둡1 MR

- MR만 실행 가능

- 낮은 자원 활용

(고정된 맵/리듀스 슬롯)

- 확장 한계 (JobTracker 병목)

하둡2 YARN

- 범용 컴퓨팅/데이터 클러스터

- MR 외 다양한 어플리케이션 실행 가능

- 높은 자원 활용

- 확장성 개선 (역할 분리)