본문 바로가기
Data Engineering/하둡 2.0

하둡 YARN이란?

by 무언가 하는 소소 2024. 2. 9.
728x90
반응형

1. YARN (Yet Another Resource Negotiator)이란?

하둡의 클러스터 자원관리 시스템이다. 클라이언트가 서브밋한 잡에 자원(CPU, RAM 등)을 할당하고 잡을 실행시킨다.

 

2. YARN의 계층 구조

맵리듀스건 스파크건 하둡 위에서 도는 프로그램은 모두 YARN에 의해 관리된다. 

 

3. YARN의 구조

YARN은 하나의 리소스 매니저와 여러 개의 노드 매니저로 이루어져있다. 리소스 매니저는 보통 HDFS의 네임노드에 있고 노드 매니저는 노드마다 한개씩 있다. 실제로 서브밋된 잡을 실행하고 모니터링 하는 일은 노드 매니저에서 일어난다. 리소스 매니저는 모든 노드 매니저리들을 모니터링하고 자원을 할당해주는 역할을 한다.

 

4. YARN 애플리케이션

YARN 애플리케이션은 YARN 리소스 매니저에 서브밋 된 잡을 의미한다. 즉 YARN의 관점에서 클러스터에 돌고 있는 프로그램을 YARN 애플리케이션이라고 한다. 한편 맵리듀스나 스파크 등의 관점에서는 해당 프로그램을 잡이라 한다. 또한 하나의 YARN 애플리케이션 혹은 잡은 여러개의 태스크(ex: 맵 태스크, 리듀스 태스크)로 이루어져있다.

 

5. YARN 애플리케이션의 작동 방식

1) YARN 애플리케이션(맵리듀스 잡) 수행 과정

클라이언트가 리소스 매니저에 잡을 서브밋하며 애플리케이션 마스터 프로세스의 실행을 요청한다. 

※ 애플리케이션 마스터: 하나의 애플리케이션을 관리하는 마스터 서버

 리소스 매니저는 컨테이너에서 애플리케이션 마스터를 시작 할 노드 매니저를 찾는다.

※ 컨테이너: 자원 풀

선택된 노드 매니저에서 애플리케이션 마스터가 실행된다. 애플리케이션 마스터는 분산 컴퓨팅을 위해 리소스 매니저에 더 많은 컨테이너(자원)를 요청한다. 

④ 새로운 컨테이너들이 시작되어 잡을 분산 처리한다. 

 

2) YARN의 자원 요청

YARN은 컨테이너를 요청할 때 컨테이너에 필요한 자원뿐만 아니라 컨테이너의 지역성도 설정할 수 있다. 분산 컴퓨팅에서 네트워크 대역폭을 잘 활용하려면 지역성을 보장하는 것은 매우 중요하다. 예를 들어 맵리듀스에서는 처리하고자 하는 데이터의 복제본을 가지고 있는 노드 중 하나에 컨테이너를 요청한다. 

 

3) YARN 애플리케이션 수명

YARN은 잡 당 하나의 애플리케이션이 실행될 수도 있고, 워크플로우나 잡 세션 당 하나의 애플리케이션을 실핼 할 수도 있다. 후자(ex: 스파크)의 경우 연속적인 잡이 동일한 컨테이너를 재사용 할 수 있고, 잡 사이에 공유 데이터를 캐싱할 수 있어 전자보다 효율적이다. 또 다른 유형으로 서로 다른 사용자들이 공유할 수 있는 장기 실행 애플리케이션도 있다.

 

4) YARN 애플리케이션 구현

YARN 애플리케이션을 쌩으로 만드는 것은 어렵기 때문에 대부분 스파크, 테즈와 같은 기존의 애플리케이션을 사용한다.

 

6. YARN vs 맵리듀스 1

맵리듀스1은 YARN이 생겨나기 전에 하둡에서 자원관리를 했던 방식이다.

 

맵리듀스 1 YARN
잡트래커 리소스 매니저, 애플리케이션 마스터, 타임라인 서버
태스크트래커 노드 매니저
슬롯 컨테이너

 

맵리듀스1에는 잡트래커와 태스크트래커가 있다. 잡트래커는 태스크트래커에서 실행되는 태스크들을 스케줄링함으로써 모든 잡을 관리하고 개별 태스크 진행을 모니터링 한다. 태스크트래커는 태스크를 실행하며 실행상태를 주기적으로 잡트래커에 전송한다. 해당 방식은 잡트래커가 모든 잡을 관리하기 때문에 병목현상이 발생할 수 있고 SPOF의 위험이 있다. 이를 해결하기 위해 YARN은 잡트래커의 역할을 리소스 매니저(잡관리)와 애플리케이션 마스터(태스크 관리)로 나누었다. 또한 기존에 잡트래커는 완료된 잡에 대한 정보를 기록하는 역할도 하였는데 이를 YARN에서는 타임라인 서버가 맡고있다. YARN은 맵리듀스에 비해 다음과 같은 장점이 있다.

 

1) 확장성 

맵리듀스 1에사는 잡트래커가 모든 잡과 태스크를 관리하였기 때문에 노드가 많아지면 병목현상이 생겼다. 

 

2) 가용성

고가용성(HA)은 서비스 데몬에 문제가 발생했을 때 다른 데몬이 이 작업을 이어받을 수 있도록 서비스 데몬의 상태를 항상 복사해두는 방식으로 구현된다. 하지만 기존의 잡트래커는 방대한 정보를 가지고 있고 상태도 빠르게 바뀌기 때문에 HA를 적용하기 매우 어려웠다. YARN에서는 리소스 매니저에 HA를 제공한 후 각 애플리케이션 마스터에 HA를 제공한다.  

 

3) 효율성

맵리듀스 1에서 슬롯은 고정된 크기였으며 맵 슬롯은 맵 태스크, 리듀스 슬롯은 리듀스 태스크에만 할당될 수 있었다. 반면 YARN은 잘게 쪼개진 자원으로 이루어진 리소스 풀을 가지고 있어 자원 낭비가 없고, 자원이 있어도 실행되지 못하는 경우가 없다. 

728x90
반응형

댓글