Tools/Hadoop

Hadoop YARN 아키텍쳐

칼쵸쵸 2023. 7. 2. 17:39

* 클라이언트 : 얀으로 실행할 잡을 summit 하는 프로그램

* 잡 : 하나이상의 태스크를 포함하는 애플리케이션

* 태스크 : 맵퍼와 리듀스가 수행한 작업들

* 맵퍼와 리듀스는 각 컨테이너 내에서 동작

YARN(Yet Another Resource Negotiator) 서비스

: HDFS처럼 마스터 노드와 워커 노드 양쪽에서 모두 동작하는 서비스

리소스 관리와 작업 스케줄링을 담당하는 프레임워크

https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html

  • 컨테이너 (Container): 컨테이너는 어플리케이션의 실행 환경을 캡슐화하는 단위입니다. 컨테이너는 작업 실행에 필요한 리소스(메모리, CPU ) 가지고 있으며, 노드매니저에 의해 제어됩니다.  앱마스터는 리소스매니저로부터 할당받은 컨테이너를 이용하여 작업을 실행합니다.

 

  • 리소스매니저 (Resource Manager): 리소스매니저는 얀 클러스터의 전체 리소스를 관리하고 할당하는 역할을 합니다. 클러스터의 리소스 상태를 추적하고, 사용 가능한 리소스를 애플리케이션에 할당하여 작업을 실행하도록 조정합니다. 리소스매니저는 얀 클러스터의 중앙 집중식 제어 타워 역할을 수행합니다.
    • 스케줄러 : 시스템 리소스 한계와 큐의 크기에 따라 실행 중인 애플리케이션에 리소스를 할당
    • 애플리케이션 매니저 :  클라이언트가 요청한 job request를 받아서 새로운 appMaster를 실행하기 위한 첫 번째 컨테이너를 실행함

 

  • 노드매니저 (Node Manager): 노드매니저는 각각의 워커 노드에서 실행되며, 해당 노드의 리소스를 관리합니다. 노드매니저는 리소스매니저와 통신하여 할당된 작업들을 실행하고 상태를 보고합니다. 또한 노드매니저는 자원 사용량, 로그 수집, 장애 탐지 등의 역할을 수행합니다.

 

  • 앱마스터 (Application Master): 앱마스터는 각각의 얀 애플리케이션에 대해 실행되는 작업 스케줄러와 리소스 관리자입니다. 앱마스터는 애플리케이션의 요구 리소스를 리소스매니저에게 요청하고, 할당받은 리소스를 노드매니저에게 할당하여 작업을 실행합니다. 각 애플리케이션은 자체 앱마스터를 가지며, 다른 애플리케이션의 앱마스터와 격리되어 실행됩니다.
    • 리소스매니저나 노드매니저와 다르게 각각의 애플리케이션에 할당되며 애플리케이션이 요구하는 리소스를 제공
    • App가 하둡시스템에 올라가면 하나의 특정 노드에 해당 app에 대한 app Master를 올리도록 되어 있음
    • 리소스 매니저의 애플리케이션 매니저가 해당 역할
    • ex) hive App Master의 기능
      1. 쿼리 실행 및 최적화
      2. 모니터링 로깅
      3. 보안 및 권한 관리
      4. 메타데이터 관리
  • 잡 히스토리 서버 (job history server) :YARN(Yet Another Resource Negotiator)에서 실행된 작업의 히스토리 정보를 제공하는 역할을 합니다. 서버는 작업 실행에 대한 로그, 상태, 진행률 통계 정보 등을 저장하고 관리

 

Yarn 기반 클러스터에서 app가 실행 되는 과정

  1. app 제출: 클라이언트가 YARN 클러스터(리소스 매니저)에 애플리케이션을 제출 
  2. App Master 할당: 클러스터의 리소스 매니저는 애플리케이션에 대한 리소스를 할당하기 위해 App Master를 실행할 노드를 선택 (애플리케이션 매니저)
  3. 컨테이너 할당:
    • 애플리케이션 마스터는 리소스 매니저로부터 컨테이너 할당 요청
    • 컨테이너는 클러스터의 노드에서 작업을 실행하기 위한 실행 환경을 제공
    • 리소스 매니저는 애플리케이션의 요구사항에 맞게 컨테이너를 할당하고
    • App마스터가 해당 노드의 노드매니저를 통해서 컨테이너를 실행
  4. 작업 실행:
    • 할당된 컨테이너에서 애플리케이션의 작업이 실행
    • 작업은 주로 맵, 리듀스, 태스크 등의 단위로 구성
    • 각 작업은 컨테이너 내에서 독립적으로 실행되며, 입력 데이터를 처리하고 중간 결과를 생성
  5. 작업 상태 및 진행 모니터링:
    • 애플리케이션 마스터는 작업의 상태와 진행 상황을 모니터링
    • 작업이 시작되면 애플리케이션 마스터는 작업의 진행 상태를 주기적으로 업데이트
    •  작업이 완료되면 결과를 수집
  6. 작업 완료 및 결과 수집: 모든 작업이 완료되면 애플리케이션 마스터는 결과를 수집
  7. 애플리케이션 종료: 애플리케이션이 실행을 마치면 애플리케이션 마스터는 클러스터 리소스를 해제하고 애플리케이션의 상태와 결과를 클라이언트에게 보고

'Tools > Hadoop' 카테고리의 다른 글

하둡 클러스터와 리소스 할당  (0) 2023.09.26
하둡 네임노드와 HDFS  (0) 2023.09.11
MapReduce 이해 하기  (0) 2023.07.25
Hadoop HDFS 아키텍쳐  (0) 2023.07.02
Hadoop 컴퓨팅과 클러스터  (0) 2023.07.02