1 분 소요

YARN - Yet Another Resource Negotiator

Hadoop version 1

하둡 버젼 1에서는 작업 실행에 두개의 주요 요소 Job-tracker, Task-tracker 가 있다.
Job-tracker가 리소스를 관리하고 작업을 스케쥴링 하며 각각의 작업의 상대를 확인하고 작업을 실패할지 재시작하는 역할까지 수행한다.
Task-tracker는 작업을 수행하며 진행 사항을 Job-tracker에게 전달한다. Job-tracker는 다른 Task-tracker에서 실패한 작업을 재스케쥴링까지 한다. 수많은 작업때문에 Job-tracker는 부하를 받는다.

하둡1 에서는 다음과 같은 한계들을 제거하기 위해 아키텍쳐에 변화를 준다

  • Scalability: Job tracker가 하는 일이 너무 많아 확장성이 4000개의 노드 40000개의 작업밖에 수행하지 못한다.
  • High availability: Job-tracker는 단일 실패 지점이다. 매초마다 Task-tracker로부터 정보를 받기때문에 고가용성을 달성하기 힘들다.
  • Memory utilization: 하둡 1은 맵리듀스 작업을 위해 사전구성된 Task-tracker 슬롯이 필요하다. 맵 작업을 위한 슬롯은 리듀스 작업에 사용하지 못함.
  • Non MapReduce jobs: 하둡 1에서의 모든 작업은 잡트래커를 통해서만 스케쥴링이 가능하기 때문에 맵리듀스가 필요하다. 그러나 Hadoop의 채택이 가속화 되면서 그래프 처리나 실시간분석 등 새로운 요구사항들이 등장했다.

YARN 의 등장

위의 한계사항들을 해결하기위해 yarn이 등장했고 자원관리와 작업 스레쥴링을 분리한다. YARN은 Resource Manager와 Node Manager 두개의 요소로 이루어져있다. 리소스 매니져는 클러스터의 자원을 관리하는 마스터 노드이다. 각각의 어플리케이션의 앱마스터는 노드 매니저 위에서 실행되며 작업 컨테이너를 시작하고 모니터링한다.

  • 리소스 매니져: 제출된 어플리케이션의 리소스를 관리
    • 스케쥴러: 앱 마스터로부터 요청을 받고 요구된 자원을 할당. 모니터링이나 재실행 같은 작업은 하지않음. 오직 작업을 스케쥴링
    • 어플리케이션 매니져: 앱 마스터를 관리, 각각의 앱 마스터를 추적한다. 작업 제출을 위한 클라이언트의 요청은 앱 매니져가 수신하며 앱 마스터를 시작하기 위한 자원을 제공한다. 앱의 실행이 완료되면 앱 마스터를 파괴한다.
  • 노드 매니져: 클러스터의 모든 worker 노드에서 실행되며 리소스 매니져의 지시에따라 컨테이너를 시작하고 실행하는 역할을 수행한다. 리소스 매니져에게 노드 매니져의 머신 정보, 가용 메모리등을 심장박동과 함께 전달. 컨테이너는 노드 매니져에서 실행되고 앱마스터는 노드 매니져의 컨테이너에서 실행된다.
  • 앱 마스터: 리소스 매니져가 노드 매니져의 컨테이너 중 하나에서 해당 작업에 대한 애플리케이션 마스터를 실행. 앱 마스터는 어플리케이션 실행을 완료하기 위해 리소스 매니져와 노드 매니져 간의 조정을 담당. 앱 마스터는 실행에 필요한 자원을 리소스 매니져에게 요청하고 리소스 매니져는 해당 노드 매니저와 조정해 컨테이너를 실행. 앱 마스터 또한 정기적으로 리소스 매니져에 심장박동을 전송

YARN 스케쥴링

  • FIFO 스케쥴러
  • Capacity 스케쥴러
  • Fair 스케쥴러

리소스 매니져의 고가용성 아키텍쳐

  • 리소스 매니져 상태 저장
  • 리소스 매니져 재시작 & 장애극복
  • Failover fencing
  • Leader elector

Node labels

  • exclusive
  • non-exclusive

YARN Timeline server

맵리듀스는 Job history sever에서 관리, YARN은 맵리듀스 외 다른 응용 프로그램들을 실행하기 때문에 이런 어플리케이션의 정보를 저장해야한다. YARN Timeline server가 그 역할을 담당함.

  • 어플리케이션 정보
  • 프레임워크 정보

카테고리:

업데이트:

댓글남기기