Hadoop YARN 이란 무엇인가

seoyeon hwang
4 min readMay 29, 2022

하둡을 사용하다보면 YARN 이란 단어를 자주 듣게 된다. 이번 글에서는 가깝고도 먼 개념인 YARN에 대해 정리해보려고 한다 :)

정의

YARN은 Yet Another Resource Negotiator의 줄임말로 번역하면 “(또 다른) 리소스 협상가” 라는 뜻이다. 즉, CPU, memory와 같은 하둡 클러스터 리소스를 관리하고 스케쥴링하는 hadoop의 컴포넌트다.

등장 배경과 설계 목표

하둡1에서는 데이터 저장소인 HDFS와 데이터를 배치 처리할 수 있는 맵리듀스라는 두 개의 시스템으로 구성되었다. 하둡2로 바뀌면서 맵리듀스는 YARN으로 대체되었다.

맵리듀스가 YARN으로 대체되면서 맵리듀스의 핵심 기능인 ‘클러스터 자원 관리’와 ‘잡 스케쥴링’은 별도의 데몬으로 분리되었다. 이렇게 분리하기 위해 YARN에는 글로벌 리소스 매니저어플리케이션 마스터가 존재한다.

또한 기존에는 맵리듀스 API로 구현된 프로그램만 실행할 수 있었지만 YARN으로 대체되면서 다양한 어플리케이션을 수용할 수 있게 되었다.

아키텍쳐

YARN 아키텍쳐

YARN은 맵리듀스와 같이 마스터/슬레이브 구조로 구성되고, 크게 4가지 컴포넌트가 존재한다.

리소스 매니저 (RM)

YARN의 마스터 서버에 해당하며 글로벌 스케쥴러로서 전체 클러스터에서 가용한 모든 시스템의 자원을 관리한다. YARN에서 실행되는 어플리케이션에 적절하게 자원을 분배하고 리소스 사용 상태를 모니터링한다.

노드 매니저

YARN의 슬레이브 서버에 해당하며 각 슬레이브에서 하나의 데몬이 실행된다. 노드 매니저는 컨테이너 단위로 어플리케이션을 실행하고 각 상태를 스케쥴링한다.

컨테이너

노드 매니저가 실행되는 서버의 시스템 자원(CPU, 메모리, 디스크, 네트워크)를 표현한다. 하나의 서버에는 여러 개의 컨테이너가 실행될 수 있다.

애플리케이션 마스터 (AM)

하나의 어플리케이션을 관리하는 마스터 서버이다. 어플리케이션에 필요한 리소스를 스케쥴링하고, 노드 매니저에게 컨테이너를 실행할 것을 요청한다.

작업 흐름

클라이언트가 YARN 클러스터에 애플리케이션 실행을 요청할 경우 어떤 작업이 순서대로 진행되는지 알아보자.

  1. 클라이언트는 애플리케이션 실행을 요청한다.
  2. 글로벌 스케쥴러인 리소스 매니저가 노드 매니저에게 애플리케이션 마스터 실행을 요청한다.
  3. 노드 매니저는 컨테이너에서 애플리케이션 마스터를 실행한다.
  4. 애플리케이션 마스터는 리소스 매니저에게 실행에 필요한 리소스를 요청한다.
  5. 애플리케이션 마스터는 노드 매니저에게 컨테이너 실행을 요청한다.
  6. 노드 매니저는 컨테이너에서 해당 애플리케이션을 실행한다.
  7. 애플리케이션이 종료되면 애플리케이션 마스터가 종료되고, 리소스 매니저는 할당했던 리소스를 해제한다.

요약

  • YARN은 클러스터 리소스를 관리하는 매니저다.
  • 하둡2가 되면서 기존 맵리듀스를 YARN이 대체하며 등장했다.
  • YARN으로 대체되면서 ‘클러스터 자원 관리’와 ‘잡 스케쥴링’이 별도의 데몬으로 분리되고 다양한 어플리케이션을 수용할 수 있게 되었다.
  • 글로벌 스케쥴러인 리소스 매니저가 있고, 하나의 어플리케이션을 관리하는 어플리케이션 마스터가 있다.
  • 노드 매니저는 어플리케이션 마스터의 요청을 받아 컨테이너당 어플리케이션을 실행한다.

--

--