[Hadoop] 하둡 분산 컴퓨팅 시스템 YARN이란?

분산 컴퓨팅 시스템 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. AMRM으로 코드 실행에 필요한 리소스를 받아옴

  • 여기서 리소스란 컨테이너들(Java JVM)
  • RM은 data locality를 고려하여 리소스(컨테이너)-NM과 통신하며 할당

4. AMNM을 통해 컨테이너들을 받아 코드 실행(태스크)

  • 실행에 필요한 파일들이 HDFS에서 Container가 있는 서버로 먼저 복사

5. 태스크들은 자신의 상황을 주기적으로 AM에게 업데이트(heartbeat)

  • 실패하거나 오랜 시간 보고가 없으면 태스크를 다른 컨테이너에서 재실행 (falut tolerance 보장)

YARN 1.0 vs. YARN 2.0 차이

  • 하둡2.0YARN1.0을 사용하고, 하둡3.0부터는 YARN2.0을 사용하고 있다.
  • YARN 2.0은 YARN 프로그램들의 논리적인 그룹(=플로우)으로 나눠서 자원 관리가 가능하다
    • 애플리케이션 용도에 따라 데이터 수집 프로세스데이터 서빙 프로세스로 나눠서 관리 가능
  • 타임라인 서버에서 HBase를 기본 스토리지로 사용(하둡 2.1부터)
  • 파일 시스템
    • 네임노드의 경우 1대 이상 다수의 스탠바이 네임노드 지원
    • HDFS, S3, Azure Storage 외에도 Azure Data Lake Storage 등을 지원

 

 

 

참고

https://jhtechblog.tistory.com/entry/4-2-%EB%B6%84%EC%82%B0-%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%99%98%EA%B2%BD-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EA%B5%AC%EC%84%B1%EC%9A%94%EC%86%8C-1