Apache Hadoop YARN
Apache Hadoop YARN
YARN(Yet Another Resource Negotiator)의 핵심 아이디어는 리소스 관리(resource management)와 작업 스케줄링/모니터링이라는 기능을 별도의 데몬으로 분리하는 것입니다. 즉 전역 ResourceManager(RM)와 애플리케이션별 ApplicationMaster(AM)를 두는 것입니다. 애플리케이션이란 단일 작업(job)이거나 작업들의 DAG입니다.
출처: 문서
본문
ResourceManager와 NodeManager는 데이터 연산(data-computation) 프레임워크를 형성합니다. ResourceManager는 시스템의 모든 애플리케이션 사이에서 리소스를 중재하는 최고 권위자입니다. NodeManager는 머신별 프레임워크 에이전트로, 컨테이너를 담당하고 그들의 리소스 사용량(cpu, memory, disk, network)을 모니터링하여 ResourceManager/Scheduler에 보고합니다.
애플리케이션별 ApplicationMaster는 사실상 프레임워크 특화 라이브러리이며, ResourceManager로부터 리소스를 협상하고 NodeManager와 협력하여 태스크를 실행하고 모니터링하는 역할을 맡습니다.
ResourceManager는 두 가지 주요 컴포넌트를 가집니다: Scheduler와 ApplicationsManager.
Scheduler는 capacity, queue 등의 익숙한 제약에 따라 다양한 실행 중인 애플리케이션에 리소스를 할당하는 역할을 담당합니다. Scheduler는 애플리케이션의 상태를 모니터링하거나 추적하지 않는다는 점에서 순수한 스케줄러입니다. 또한 애플리케이션 실패나 하드웨어 실패로 인한 실패 태스크 재시작에 대해서도 어떤 보장도 제공하지 않습니다. Scheduler는 애플리케이션의 리소스 요구사항에 기반하여 스케줄링 기능을 수행하며, memory, cpu, disk, network 등의 요소를 포함한 리소스 컨테이너(Container)라는 추상적 개념을 바탕으로 이를 수행합니다.
Scheduler는 다양한 큐, 애플리케이션 등 사이에서 클러스터 리소스를 분할하는 pluggable 정책을 가집니다. 현재의 CapacityScheduler, FairScheduler 같은 스케줄러들이 플러그인의 예입니다.
ApplicationsManager는 작업 제출을 받아들이고, 애플리케이션별 ApplicationMaster를 실행하기 위한 첫 컨테이너를 협상하며, 실패 시 ApplicationMaster 컨테이너를 재시작하는 서비스를 제공하는 역할을 담당합니다. 애플리케이션별 ApplicationMaster는 Scheduler로부터 적절한 리소스 컨테이너를 협상하고, 그들의 상태를 추적하며 진행 상황을 모니터링할 책임이 있습니다.
hadoop-2.x의 MapReduce는 이전 안정 버전(hadoop-1.x)과 API 호환성을 유지합니다. 즉 모든 MapReduce 작업은 단지 재컴파일만 하면 YARN 위에서 변경 없이 계속 실행되어야 합니다.
YARN은 ReservationSystem을 통한 리소스 예약(resource reservation) 개념을 지원합니다. 이는 사용자가 시간에 따른 리소스 프로파일과 시간 제약(예: 데드라인)을 지정하고, 중요한 작업의 예측 가능한 실행을 보장하기 위해 리소스를 예약할 수 있게 하는 컴포넌트입니다. ReservationSystem은 시간에 따른 리소스를 추적하고, 예약에 대한 승인 제어(admission control)를 수행하며, 예약이 충족되도록 기본 스케줄러에 동적으로 지시합니다.
수천 개 노드 이상으로 YARN을 확장하기 위해 YARN은 YARN Federation 기능을 통한 Federation 개념을 지원합니다. Federation은 여러 YARN (서브)클러스터를 투명하게 연결하여 하나의 거대한 클러스터처럼 보이게 만듭니다. 이는 더 큰 규모를 달성하거나, 여러 독립 클러스터를 매우 큰 작업에 함께 사용하거나, 그 모두에 걸쳐 capacity를 가진 테넌트를 위해 사용될 수 있습니다.
더 알아보기 (Learn more)
- 원문: 문서