[Yarn] YARN Architecture

Hyunjun Kim·2025년 8월 21일
0

Data_Engineering

목록 보기
132/153

2 YARN Architecture

2.1 Is Yarn dependent to HDFS?

Yarn 은 cpu, memory 와 같은 computing resource 를 할당해주고 리소스의 사용을 관리하는 소프트웨어이다.


https://www.simplilearn.com/tutorials/hadoop-tutorial/yarn

yarn은 어플리케이션을 동작하기 위한 리소스를 프로비저닝 해주는 친구다.
HDFS는 redundant하고 reliable한 파일 스토리지를 제공하는 친구다.

Yarn 과 HDFS 자체는 완전히 독립적이다. HDFS는 Storage 기능을 제공하고, Yarn 은 application 을 구동하는 기능을 제공한다.



2.2 YARN High-Level Architecture

Yarn 의 Architecture 는 크게 3가지 역할을 하는 컴포넌트로 구성되어있다.

  • Resource Manager (대장임)
  • Application Master
  • Node Managers

그림으로 보면 아래와 같다.

https://www.simplilearn.com/tutorials/hadoop-tutorial/yarn


2.2.1 Resource Manager

Resource Manager (줄여서 RM이라고 부른다.)

  • 요새는 primary라고 부르기도 함

  • 통상 cluster 당 한개 존재한다.

  • master 서버의 역할이다.

  • data node 의 위치와 resource 의 양을 알고 있다. (Rack Awareness 포함)

  • RM은 내부적으로 여러개의 서비스로 구성되어있다. 가장 중요한 요소는 Scheduler 로 리소스 할당을 어떻게 할지를 결정한다.


2.2.2 Application Master

Application Master 는 framework에 따라 구현하는 프로세스로, 하나의 어플리케이션이 리소스를 어떻게 사용할지 조정하는 역할을 한다.
Yarn에 제출되는 job 에서 가장 먼저 시작하는 container 이다.
각 Application Master는 RM으로부터 리소스를 요청하고, Node Manager 가 제공해준 container 와 함께 동작한다.


2.2.3 Node Managers

primary 입장에서 Node Manager는 Worker Node라고 볼 수 있다.

Node Manager 는 클러스터에 여러개 존재 가능하다. 인프라의 slave이다.
NM이 시작되면, RM에게 주기적으로 heart beat 를 전송해서 자신을 알린다.

NM은 클러스터에 리소스를 제공한다. NM이 관리하는 리소스 capacity는 v-core 수와 memory 양 이다.
런타임(클러스터가 실제로 잡(Job)이나 애플리케이션을 실행하고 있는 도중)에 Resource Scheduler 는 해당 capacity 를 어떻게 사용할지 결정한다.
컨테이너는 NodeManager capacity의 일부를 할당받아서 클라이언트가 제출한 프로그램을 실행하는 데 사용한다.
각 NM는 RM의 지시를 받아 해당 노드에 있는 컨테이너의 상태를 보고하고 관리한다.



2.3 Resource Manager 의 주요 요소

2.3.1 Resource Manager의 기능과 역할

Resource Manager는 Yarn 클러스터에서 이용가능한 리소스를 관리한다.
클러스터의 최대 utilization(=캐패시티) 하에서 요청된 어플리케이션들의 리소스를 관리한다.

RM은 pluggable 한 YarnScheduler 를 포함한다.
Yarn Scheduler 는 구현체(객체)마다 다른 정책을 가질 수 있다. capacity, faireness, SLA(service level agreements) 등.

RM 은 Scheduler 와 Application Manager 를 주요 컴포넌트로 가지고 있다.

pluggable한 YarnScheduler 란?
플러그인(plug-in)처럼 교체/확장 가능하다는 뜻으로
ResourceManager(RM) 안에 있는 YARN Scheduler는 고정된 하나의 방식만 쓰는 게 아니라, 원하는 정책의 구현체를 선택해서 “꽂아 쓸 수 있다”는 개념이다.


예시 : 기본적으로 YARN은 여러 종류의 스케줄러를 제공

  • FIFO Scheduler: 먼저 들어온 Job부터 처리 (단순하지만 불공정할 수 있음)
  • Capacity Scheduler: 각 Queue별로 최소/최대 리소스를 보장 (멀티테넌트 환경에 적합)
  • Fair Scheduler: Job들 간 리소스를 공평하게 나눔 (짧은 Job도 오래 기다리지 않음)

2.3.2 Resource Manager Component - Scheduler

Scheduler 는 다양한 어플리케이션에 리소스를 할당하는 책임을 가지고 있다. 리소스를 할당하는 데는 capacities, queue 등의 제약을 받는다.
Scheduler 는 어플리케이션의 상태를 모니터링하지 않는다. 또한 어플리케이션의 장애나 HW failure 에 의한 장애등에 의한 restart 등의 작업도 하지 않는다.
Scheduler 는 어플리케이션의 리소스 요구사항을 기반으로 한 기능만 수행한다.

스케줄러는 어플리케이션의 리소스 요구 사항에 따라 기능을 수행한다.
요구사항은 메모리, CPU, 디스크 및 네트워크와 같은 요소를 통합하는 리소스 컨테이너의 추상적인 개념을 기반으로 한다.
스케줄러에는 다양한 queue 와 어플리케이션 사이에 클러스터 리소스를 분배하는 역할을 하는 policy plugin이 있다.
플러스인의 예로는 Capacity Scheduler 및 Fair Scheduler 등이 있다.
Capacity Scheduler는 hierarchical queue 로 클러스터 리소스의 공유를 더 예측가능한 방식으로 할 수 있다.

Hierarchical Queue란?

  • 계층 구조를 가진 큐(queue)를 의미합니다.
  • 단순한 큐(Flat Queue)는 Job이 한 줄로 나란히 대기하지만, hierarchical queue는 부모-자식 구조를 가진다.
  • 예시:
root
├─ finance
│   ├─ payroll
│   └─ audit
└─ marketing
    ├─ ads
    └─ social

Hierarchical Queue 장점

  1. 리소스 공유를 계층별로 제한 가능
    • 예: finance 전체는 40% CPU 사용, payroll은 그 중 60% 사용
  2. 예측 가능한 리소스 할당
    • 각 하위 큐가 받을 수 있는 최소/최대 자원을 명확히 지정 가능
  3. 멀티테넌트 환경에 유리
    • 여러 팀/부서가 같은 클러스터를 쓰더라도 서로 자원을 침범하지 않게 관리

Capacity Scheduler와 연결

  • Capacity Scheduler는 각 큐에 최소 용량(min capacity)과 최대 용량(max capacity)을 설정
  • hierarchical queue를 사용하면, 루트부터 자식 큐까지 계층적으로 자원 배분
  • 그래서 클러스터 리소스를 팀/부서 단위로 예측 가능하게 공유할 수 있음

2.3.3 Resource Manager Component - Application Manager

Application Manager(AM) 는 제출된 어플리케이션의 리스트를 관리하는 인터페이스이다.
AM은 Job의 제출을 받아주고, Application Master 가 뜰 첫번째 컨테이너를 선정하고, 실패(장애)에 대해 Application Master container를 재시작하는 역할을 한다.

profile
Data Analytics Engineer 가 되

0개의 댓글