Apache hadoop 의 YARN Architecture 공식 문서를 번역한 게시글이다.
https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html
Apache Hadoop 3.3.2 – Apache Hadoop YARN
<!--- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or a
hadoop.apache.org
YARN
YARN의 기본적인 목적은 리소스 관리 및 잡 스케줄링/모니터링의 기능을 별도의 데몬으로 분할하는 것이다. 이는 글로벌 ResourceManager(RM)와 애플리케이션별 ApplicationMaster를 가지고 있다. 애플리케이션은 단일 작업 또는 작업 DAG이다.
ResourceManager와 NodeManager
ResourceManager와 NodeManager는 데이터 계산 프레임워크를 형성한다. ResourceManager는 시스템의 모든 애플리케이션의 리소스를 중재하는 궁극적인 권한을 갖는다. NodeManager는 컨테이너의 리소스 사용량(cpu, 메모리, 디스크, 네트워크)을 모니터링하고 ResourceManager 또는 스케줄러에 해당 내용을 보고하는 시스템별 프레임워크 에이전트이다.
사실 애플리케이션별 ApplicationMaster는 프레임워크별 라이브러리이며, ResourceManager의 리소스를 협상하고 NodeManager와 협력하여 작업을 실행하고 모니터링하는 작업을 수행한다.

- ResourceManager의 두 가지 주요 구성요소 : 스케줄러, ApplicationsManager
스케줄러
스케줄러는 흔히 용량, 큐 등의 제약조건에 따라 실행 중인 다양한 애플리케이션에 리소스를 할당할 책임이 있다. 스케줄러는 애플리케이션에 대해서 모니터링이나 트래킹을 하지 않는다는 점에서 순수한 스케줄러라고 할 수 있다. 또한, 애플리케이션 장애 또는 하드웨어 장애로 인한 실패한 작업을 재시작하는 것도 보장하지 않는다. 스케줄러는 애플리케이션의 리소스 요구사항에 따라 스케줄링 기능을 수행한다 (메모리, CPU, 디스크, 네트워크 등과 같은 요소를 포함하는 리소스 컨테이너의 추상적 개념에 기반 함).
스케줄러에는 다양한 큐, 애플리케이션 등 간에 클러스터 리소스를 분할하는 플러그형 정책이 있다. 예를 들면, CapacityScheduler와 FairScheduler 같은 플러그인들이 있다.
ApplicationsManager
ApplicationsManager는 작업 제출을 수락하고 애플리케이션별 ApplicationMaster를 실행하기 위한 첫 번째 컨테이너를 협상하며, 오류 발생 시 ApplicationMaster 컨테이너를 재시작하는 서비스를 제공한다. 애플리케이션별 ApplicationMaster는 스케줄러에서 적절한 리소스 컨테이너를 협상하고, 해당 컨테이너의 상태를 추적하고, 진행 상황을 모니터링할 책임이 있다.
Hadoop-2.x 버전의 맵리듀스는 이전의 안정적인 릴리즈 버전(hadoop-1.x)과 API 호환성을 유지한다. 즉, 모든 맵리듀스 작업은 다시 컴파일만 해도 YARN 위에서 변경되지 않고 실행되어야 한다.
YARN은 ReservationSystem을 통해 자원 예약 개념을 지원한다. 이는 사용자가 시간 경과에 따른 자원이나 시간적 제약(e.g. 마감일)의 프로파일을 지정하고, 중요한 작업의 예측 가능한 실행을 보장하기 위해 자원을 예약할 수 있는 컴포넌트이다. ReservationSystem은 초과시간에 리소스를 추적하고 예약에 대한 승인 제어를 수행한다. 또한 예약이 꽉 찼는지 확인하기 위해 기본 스케줄러에 동적으로 지시한다.
YARN을 수천 개의 노드 이상으로 확장하기 위해, YARN Federation기능을 통해 Federation 개념을 지원한다. Federation은 여러 개의 하위 클러스터를 투명하게 연결하여 하나의 대규모 클러스터로 표시할 수 있도록 한다. 이를 통해 대규모 확장을 달성하거나, 대규모 작업에 여러 독립적인 클러스터를 함께 사용하거나, 사용자가 그 모든것을 수용할 수 있다.
'Bigdata > 하둡 Architecture 번역' 카테고리의 다른 글
| Hive Architecture (0) | 2022.05.17 |
|---|---|
| HBase Architecture (0) | 2022.05.17 |
| Kafka Architecture (0) | 2022.05.17 |
| Zookeeper Architecture (0) | 2022.05.17 |
| HDFS Architecture (0) | 2021.09.30 |