분산 컴퓨팅 시스템 YARN 이란?
하둡 2.0에 등장한 분산 컴퓨팅 시스템으로 분산 파일 시스템(HDFS)위에 올라간 범용 컴퓨팅 프레임워크로
하둡 1.0에서 분산파일시스템위에 분산컴퓨팅시스템 MapReduce를 바로 사용하는 방식 ↔️ 세부 리소스 관리가 가능하고
낮은 생산성을 개선하기 위해 클러스터 자원 관리자 역할의 YARN이 만들어졌다.
분산 컴퓨팅 시스템 YARN의 구조

리소스 매니저(Resource Manager)
- Job Scheduler, Application Manager의 2종류의 데몬이 존재
- Master 역할
노드 매니저(Node Manager)
- slave 마다 노드매니저가 설치되어 있음
- 노드매니저는 그 서버에 resource를 관리하는데 여기서 resource란 컨테이너를 말함
컨테이너(Container)
- 다수의 컨테이너가 한 노드 매니저 아래에 있음.
- 자바에서 JVM 역할
- 앱 마스터와 태스크의 2종류의 데몬이 존재
- 앱 마스터: 특별한 형태의 컨테이너
- 태스크
YARN 의 동작(데몬 실행 순서)
1. 클라이언트가 실행 코드와 환경 정보를 Resource Manager(RM)에게 제출
- 실행에 필요한 파일들은 application ID에 해당하는 HDFS 폴더에 미리 복사됨
2. RM이 Node Manager(NM)을 통해 Application Master(AM) 실행
- RM이 Application Master(AM)을 만듦
- AM은 Node Manager(NM)안에 컨테이너(Container)에서 실행
- 다수의 NM이 존재하는데 사용하지 않고 있는 노드 중 하나를 골라 NM에게 Container 요청
Application Master는 YARN Client가 실행시킨 Application의 주인 역할을 하고
YARN Application 마다 하나의 Application Master(=프로그램 마스터)가 생김
→ YARN Cluster안에는 Application 수만큼 AM이 돌아가고 있음
☝🏻 YARN Application 이란 MapReduce, Spark와 같은 애플리케이션 레이어
3. AM이 RM으로 코드 실행에 필요한 리소스를 받아옴
- 여기서 리소스란 컨테이너들(Java JVM)
- RM은 data locality를 고려하여 리소스(컨테이너)-NM과 통신하며 할당
4. AM에 NM을 통해 컨테이너들을 받아 코드 실행(태스크)
- 실행에 필요한 파일들이 HDFS에서 Container가 있는 서버로 먼저 복사
5. 태스크들은 자신의 상황을 주기적으로 AM에게 업데이트(heartbeat)
- 실패하거나 오랜 시간 보고가 없으면 태스크를 다른 컨테이너에서 재실행 (falut tolerance 보장)
YARN 1.0 vs. YARN 2.0 차이
- 하둡2.0은 YARN1.0을 사용하고, 하둡3.0부터는 YARN2.0을 사용하고 있다.
- YARN 2.0은 YARN 프로그램들의 논리적인 그룹(=플로우)으로 나눠서 자원 관리가 가능하다
- 애플리케이션 용도에 따라 데이터 수집 프로세스와 데이터 서빙 프로세스로 나눠서 관리 가능
- 타임라인 서버에서 HBase를 기본 스토리지로 사용(하둡 2.1부터)
- 파일 시스템
- 네임노드의 경우 1대 이상 다수의 스탠바이 네임노드 지원
- HDFS, S3, Azure Storage 외에도 Azure Data Lake Storage 등을 지원
참고
'데브코스 데이터엔지니어링' 카테고리의 다른 글
| [Spark] Bucketing과 Partitioning (0) | 2025.01.02 |
|---|---|
| [Spark] 데이터 파일 포맷 (Text, JSON, PARQUET 등 비교) (0) | 2025.01.02 |
| [Hadoop] HDFS 분산 파일 시스템이란 (0) | 2025.01.02 |
| [Hadoop] 하둡(Hapoop) 이란? (0) | 2025.01.02 |
| [Spark] AWS EMR 클라우드 기반 Spark 클러스터 실행 (0) | 2025.01.01 |