Big Data

Hadoop YARN이란 무엇인가?

개발기록자 2023. 5. 27.

Hadoop YARN이란?

YARN(Yet Another Resource Negotiator)이란 또 다른 리소스 협상가라는 뜻으로, Hadoop Cluster 내에서 리소스작업 스케줄링을 담당하는 컴포넌트입니다. 기존 Hadoop의 단점을 보완하기 위해 V2부터 도입되었습니다. 이번 글에서는 YARN이 무엇인지, 왜 등장하는지 등 YARN에 대해 알아보겠습니다.


Hadoop V1 (MR 계층)

Hadoop이 처음 개발되었을 당시에는 Job TrackerTask Tracker가 있었습니다. Job Tracker는 클러스터의 리소스 관리, 작업 상태 추적, 작업의 스케줄링중앙 제어 역할을 하고, Task Tracker는 Job Tracker로부터 할당된 작업을 처리하는 역할을 합니다.

 

Hadoop V1, Job Tracker

 

① 잡 트래커는 클라이언트에서 작업을 제출하면, 해당 작업을 받아 태스크 트래커로 할당합니다.

② 태스크 트래커는 잡 트래커로부터 할당된 작업을 처리합니다.

- MapReduce 작업을 처리하는 역할을 합니다.

- 할당된 데이터를 읽고 처리하여 결과를 생성합니다.

③ 태스크 트래커는 잡 트래커에게 상태 업데이트를 보고하고, 작업의 진행 상황을 전달합니다.

④ 잡 트래커는 작업 진행 상황을 모니터링하며, 작업이 완료되면 결과를 수집합니다.

 

병렬처리의 작업 단위는 슬롯(slot)입니다. 맵 슬롯, 리듀스 슬롯의 개수가 정해져 있고, 실행 시점에 역할이 정해지면 슬롯의 용도를 변경할 수 없기 때문에 맵 작업이 진행 중에는 리듀스 슬롯은 대기상태로 있었습니다. 이로 인해 클러스터가 100% 활용되지 않을 때도 있었습니다.

V1의 한계(병목 현상)

이러한 구조에서는 JobTracker의 한계로 인해 병목 현상이 발생할 수 있었습니다. JobTracker가 모든 작업을 처리해야 했기 때문에 작업 규모의 증가나 작업 요청의 증가로 인해 처리량과 성능에 제한이 생기게 되었습니다. 또한 장애로 인해 JobTracker가 중지되면 전체 시스템이 중단될 수 있는 위험도 존재했습니다.

 

이런 문제점을 해결하기 위해 Hadoop V2에서는 JobTracker의 역할을 분리하여 YARN을 도입하였습니다. YARN은 작업 스케줄링과 리소스 할당을 담당으로 하는 역할을 수행하며, 이를 통해 클러스터의 확장성과 성능을 향상시킬 수 있게 되었습니다.


Hadoop V2(YARN 계층)

 

YARN 아키텍처는 Job Tracker의 기능을 분리하여 자원관리는 Resource Manager(리소스 매니저, RM)Node Manager(노드 매니저, NM)가 담당하고, 애플리케이션의 라이프 사이클 관리는 Application Master(애플리케이션 마스터, AM)가 담당하고, 작업의 처리는 Container가 담당합니다.

 

Hadoop V2, YARN

 

① 클러스터에서 작업이 제출되면, AM을 생성합니다.

- 리소스 매니저는 해당 작업을 처리하기 위해 애플리케이션 마스터를 생성합니다.

② AM은 RM에게 작업을 실행하기 위해 필요한 리소스를 요청합니다.

③ RM은 요청된 리소스를 할당하기 위해 NM에게 컨테이너 할당을 요청합니다.

④ NM은 컨테이너를 할당하고 실행합니다.

⑤ AM은 할당 받은 컨테이너의 정보를 받아 작업을 실행하고, 작업의 진행 상황을 모니터링합니다.

⑥ 작업이 완료되면 AM은 RM에게 받은 컨테이너를 반환하도록 요청합니다.

⑦ RM은 요청을 받고 컨테이너를 종료합니다.


정리

- Hadoop V2가 되면서  YARN이 등장

- YARN은 클러스터 내의 리소스 관리, 작업 스케줄링 등을 담당

- 클러스터 자원 관리(RM, NM) / 작업 관리(AM)를 분리

- 작업 처리는 컨테이너 단위로 처리

- 맵리듀스 외에도 다른 분산 처리 모델도 수행 가능


함께 보면 좋은 글

 

Hadoop이란 무엇인가?

Hadoop이란 무엇인가? Hadoop(High-Availability Distributed Object-Oriented Platform) Hadoop은 대용량 데이터를 처리하기 위한 오픈소스 프레임워크로, 현재 많은 기업과 조직에서 대용량 데이터 처리에 활용되고

dev-records.tistory.com

 

 

HDFS와 MapReduce에 대해

HDFS와 MapReduce 이전 글에서는 Hadoop에 대해 간단하게 알아보았으며, 이번 글에서는 Hadoop의 코어 프로젝트인 HDFS와 MapReduce에 대해 간단히 알아보겠습니다. Hadoop의 버전마다 차이가 있을 수 있습니

dev-records.tistory.com

 

'Big Data' 카테고리의 다른 글

Apache Kafka(카프카) 기본개념  (2) 2023.06.09
Colab + Spark 활용한 간단한 예제  (0) 2023.06.05
Apache Spark란?  (0) 2023.06.02
HDFS와 MapReduce에 대해  (0) 2023.05.25
Hadoop이란 무엇인가?  (0) 2023.05.23

댓글