2012년 이전 Yarn의 등장 전까지 Hadoop(v.1.x)을 이용해서 대용량 프로세싱 작업을 위해선 MapReduce를 사용해야 했음
Hadoop 2.0과 함께 Yarn이 등장하며 MapReduce제약에서 자유롭게 multi processing프로그램을 Hadoop 자원을 이용해서 만들 수 있게 됨
Yarn은 대용량 Multi-processing 처리에 있어서 성능의 향상과 유연한 execution engine에 장점이 있음(Spark 등의 사용 가능)
Yarn을 통해 Batch위주의 작업에서 벗어나 반복 작업과 Streaming processing까지도 가능해짐
Yarn을 통한 대용량의 단일 클러스터 방식이 갖는 장점은 다음과 같음
한 애플리케이션이 사용하지 않을 때 다른 애플리케이션이 자원을 점유할 수 있으므로 Cluster의 Utilization을 높일 수 있음
단일 클러스터에서 데이터 저장, 조회뿐만 아니라, 멀티프로세싱 애플리케이션까지 모두 동작하므로 운영 비용을 낮출 수 있음
데이터 저장소와 데이터를 활용하는 애플리케이션이 같은 클러스터에서 동작하므로, 데이터 이동에 대한 작업이나 비용이 감소
컨테이너의 사전적 정의는 소프트웨어 서비스를 실행하는 데 필요한 특정 버전의 프로그래밍 언어의 런타임과 소프트웨어 실행에 필요한 라이브러리 등을 함께 담고 있는 응용 프로그램 코드의 경량 패키지
Cloud, kubernetes를 중심으로 컨테이너화를 활용하는 전략이 가속화 되고 있음
Container의 장점은 다음과 같음
Separation of respoinsibility
Workload portability
Application isolation
Yarn의 Architecture는 크게 3개지 역할을 하는 컴포넌트로 구성
Resource Manager(RM)
Application Master(AM)
Node Managers(NM)
RM의 기능과 역할
Scheduler
Application Manager
클라이언트는 애플리케이션 실행을 요청. RM은 실행 요청이 유효하면 클라이언트에 새로운 Application ID를 할당
RM은 NM에게 AM 실행을 요청
NM는 RM의 요청을 받아 컨테이너에서 AM을 실행. 이때 컨테이너는 새로운 JVM을 생성해 AM을 실행함
AM은 RM에게 애플리케이션을 실행하기 위한 리소스를 요청. RM은 전체 클러스터의 리소스 상태를 확인한 후 AM에게 NM 목록을 전달
AM은 할당받는 NM들에게 컨테이너 실행을 요청
NM들은 컨테이너에 새로운 JVM을 생성하고, 애플리케이션을 실행. 애플리케이션이 종료되면 AM도 종료됨. 마지막으로 RM이 종료된 AM에게 할당했던 리소스를 해제함
Yarn 클러스터에서 맵리듀스 애플리케이션을 실행할 경우, 맵 테스크는 노드 매니저의 컨테이서에서 실행
그런데 노드 매니저는 컨테이너에서 실행중이던 애플리케이션이 종료될 경우 컨테이너도 함께 종료시킴
이렇게 컨테이너가 종료된다면 맵 테스크는 리듀스 테스크에 데이터를 전달할 수 없게됨
Yarn은 이러한 상황의 방지를 위해 Auxiliary Service(보조 서비스)를 제공. 즉, 노드 매니저 사이의 서비스 제어를 위한 기능임
다른 노드 매니저 사이에 데이터를 전달하거나 다른 노드 매니저를 제어할 수 있게 해주는 서비스라고 이해하면 쉬움
즉, Auxiliary Service를 맵리듀스에 적용하면 맵을 실행하는 노드 매니저와 리듀스를 실행하는 노드 매니저 사이에 셔플(데이터 전송 및 재배치)가 가능해짐