[java] 자바와 아파치 하둡의 YARN 아키텍처

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는 하나 이상의 작업을 실행하기 위해 할당된 자원의 추상화입니다. 각 ContainerNodeManager에서 실행되며, 작업의 실행 환경을 제공하고 해당 작업의 실행 상태를 감시합니다. ApplicationMaster는 필요한 작업마다 적절한 수의 Container를 요청하여 할당받습니다.

YARN의 장점

결론

YARN은 아파치 하둡을 더욱 강력하고 확장 가능한 시스템으로 만들어줍니다. 자바를 통해 YARN 아키텍처에 접근하고, 클러스터 자원을 효율적으로 관리할 수 있습니다. 이를 통해 하둡 클러스터의 성능을 향상시키고 다양한 응용 프로그램을 동시에 실행할 수 있습니다.

더 자세한 정보는 링크에서 확인하실 수 있습니다.