YARN이란?
YARN은 “Yet Another Resource Negotiator”의 약자로, 아파치 하둡의 두 번째 버전부터 도입된 클러스터 자원 관리 시스템입니다. YARN은 기존의 잡 스케줄러인 맵리듀스(JobTracker)와 자원 관리자인 태스크 트래커(TaskTracker)를 분리하여, 더욱 확장 가능하고 유연한 하둡 시스템을 구축할 수 있도록 해줍니다.
YARN 아키텍처
YARN은 네 가지 주요 구성요소로 구성되어 있습니다.
ResourceManager
ResourceManager
는 클러스터의 전체 자원을 관리하며, 작업 처리를 위한 자원을 할당합니다. 이는 기존 맵리듀스의 JobTracker 역할을 대체하는 구성요소입니다. ResourceManager
는 클러스터에 동작 중인 모든 노드에 대한 자원 및 할당 관련 정보를 추적하고, 클라이언트의 작업 요청을 받아 들여 적절한 노드에 자원을 할당합니다.
NodeManager
NodeManager
는 하둡 클러스터의 개별 노드에서 실행되는 에이전트입니다. 각 노드당 하나의 NodeManager
가 존재하며, ResourceManager
와 연결되어 클러스터의 자원 사용량 및 상태 정보를 제공합니다. 또한, NodeManager
는 할당된 자원을 사용하여 작업을 실행하고 모니터링합니다.
ApplicationMaster
ApplicationMaster
는 각 클라이언트 응용 프로그램에 대한 감독자 역할을 수행합니다. 여러 개의 응용 프로그램이 동시에 실행될 수 있는데, 각 응용 프로그램마다 별도의 ApplicationMaster
가 할당됩니다. ApplicationMaster
는 해당 응용 프로그램의 실행 및 상태 관리를 담당하며, 필요한 자원을 ResourceManager
에 요청하여 할당받습니다.
Container
Container
는 하나 이상의 작업을 실행하기 위해 할당된 자원의 추상화입니다. 각 Container
는 NodeManager
에서 실행되며, 작업의 실행 환경을 제공하고 해당 작업의 실행 상태를 감시합니다. ApplicationMaster
는 필요한 작업마다 적절한 수의 Container
를 요청하여 할당받습니다.
YARN의 장점
- 하둡 클러스터의 확장 가능성과 유연성이 향상됩니다.
- 여러 응용 프로그램의 병렬 실행이 가능해져, 시스템의 전체 처리량이 향상됩니다.
- 자원 관리가 중앙 집중화되어, 클러스터의 자원 사용률이 향상됩니다.
결론
YARN은 아파치 하둡을 더욱 강력하고 확장 가능한 시스템으로 만들어줍니다. 자바를 통해 YARN 아키텍처에 접근하고, 클러스터 자원을 효율적으로 관리할 수 있습니다. 이를 통해 하둡 클러스터의 성능을 향상시키고 다양한 응용 프로그램을 동시에 실행할 수 있습니다.
더 자세한 정보는 링크에서 확인하실 수 있습니다.