이야기박스
YARN ; Yet Another Resource Negotiator 본문
Resource Manager의 조사로 쿠버네티스, 메소스에 이어서 YARN을 하게 되었습니다.
하둡을 가끔씩 사용하면서도 YARN의 구조를 제대로 파악하지 못하고 있었는데, 이번 기회에 공부할 수 있게 되었네요.
YARN은 Hadoop2에 등장한 Resource Management, 즉 리소스 관리 플랫폼이라 할 수 있습니다.
그래서 표지도 Apache Hadoop으로 하였습니다 ㅎㅎ
# 하둡 구성
먼저 하둡에 대해서 간단하게 이야기하고 넘어가야 할 것 같습니다.
하둡은 분산 환경에서 빅 데이터를 저장하고 처리할 수 있는 자바 기반의 오픈 소스 프레임 워크입니다.
정말로 많은 곳에서 사용되고 있습니다.
요새 많이 사용되고 있는 Hadoop 2.0 대표적 특징은 아래와 같습니다.
- HDFS(Hadoop Distributed File System)
- YARN(Yet Another Resource Negotiator)
- MR 뿐만 아니라 다양한 어플리케이션 지원 (대표적으로 스파크)
이번에 YARN을 조사하면서 주의깊게 봐야하는 하둡1에서 하둡2로의 변화는 두 가지가 있습니다.
- 하둡 1.0에서 MapReduce의 JobTracker의 클러스터 관리, 잡 스케줄링 & 모니터링 기능을 하둡 2.0에서 두개로 분리하여 ResourceManager, ApplicationMaster로 구분하였습니다.
- 하둡 1.0에서 Slave Node에서 TaskTracker가 수행하던 Map Reduce 작업을 하둡 2.0에서는 NodeManager가 수행하게 되었습니다.
# YARN 구성
YARN은 하둡 2.0부터 제공되는 리소스 관리 플랫폼입니다. 하둡 1.0의 MapReduce의 단점을 극복하기 위해서 시작된 프로젝트라고 하네요.
주요 구성 요소는 다음과 같습니다.
## Resource Manager
클러스터마다 존재하며 클러스터 전반의 자원 관리 및 태스크들의 스케줄링 담당하는 컴퍼넌트입니다.
클라이언트로부터 어플리케이션 실행 요청 받으면 책임질 ApplicationMaster을 할당하고 Node Manager와 통신을 통해 사용중인 리소스 상황을 지속 확인합니다.
Resource Manager에는 하위 구성 요소들이 존재합니다.
1. Scheduler
- Node Manager들의 자원 상태 관리, 부족한 리소스들 배정
- Scheduler는 프로그램의 상태를 검사, 모니터링 하지 않으며 순수하게 스케줄링
2. Application Manager
- Node Manager에서 특정 작업을 위해 Application Master를 실행, 상태 관리
- Application Master는 YARN에서 실행되는 하나의 태스크를 관리하는 마스터 서버를 의미
3. Resource Tracker
- Container가 아직 살아 있는지 확인하기 위해, Application Master 재시도 최대 횟수, Node Manager의 Timeout 시간 등 설정 정보 가지고 있음
## Node Manager
1. Application Master
- 하나의 프로그램에 대한 마스터 역할
- Scheduler로부터 적절한 Container 할당 받음
- 프로그램 실행 상태 모니터링, 관리
2. Container
- CPU, 디스크, 메모리 등과 같은 속성으로 정의
- 각 태스크는 하나의 컨테이너 안에서 실행
- 필요한 자원의 요청은 Application Master가 담당, 승인 여부는 Resource Manager가 담당
# YARN 동작
동작 프로세스는 아래와 같습니다. Opentutorials에 제공되는 내용을 그대로 가져왔습니다.
1. YARN 클라이언트가 제출하는 Job/Application (MapReduce, java application 등등) 이 ResourceManager 에게 제출이 된다.
2. 마스터 노드의 Application Manager는 제출된 job의 유효성을 체크하고, 자원 할당을 위해 스케쥴러에게 넘겨준다.
3. 스케쥴러는 임의의 slave node에 있는 컨테이너 중 하나를 Application Master로 할당한다.
4. Application Master는 slave nodes상의 데이터의 위치, cpu, memory등을 Resource Manager에 제공함으로써 Application Master 외의 container들을 조율한다.
5. Resource Manager는 최상의 리소스들을 할당하고, Application master에 node의 디테일한 정보들을 전달한다.
6. Application master는 container들을 실행시키기 위해 제안된 slave node상의 Node manager에게 요청을 보낸다.
7. Application master는 잡이 실행되는 동안, 요청된 container들의 리소스를 관리한다. 그리고 실행이 완료되면, Resource manager에게 알려준다.
8. Node manager는 스케쥴러가 새로운 application을 시작할 수 있도록 하기 위해, 주기적으로 자신의 노드에서 현재 이용가능한 리소스들의 상태를 Resource manager에게 알려준다.
9. Slave node에서 이상이 생긴 경우, Resource manager는 Application master가 프로세스를 완료할 수 있도록 새로운 container를 할당한다.
# 참고
https://opentutorials.org/module/2926/17248
https://backtobazics.com/big-data/yarn-architecture-and-components/
'Computer & Data > Orchestration' 카테고리의 다른 글
Kubernetes 2. Docker (0) | 2019.05.06 |
---|---|
Kubernetes 설치 (1) | 2019.04.30 |
Kubernetes vs Mesos with Marathon (0) | 2019.04.25 |
Mesos; Master, Slave, Marathon 설치 (0) | 2019.04.24 |
VirtualBox를 통한 클러스터용 VM 생성 (0) | 2019.04.23 |