아파치 하둡 YARN은 리소스 관리와 컴포넌트 처리를 분리한 하둡 2.0에 도입된 아파치 소프트웨어 재단의 서브 프로젝트입니다. YARN은 맵-리듀스의 차세대 기술로서 맵-리듀스의 확장성과 속도문제를 해소하기 위해 새로 개발된 프로젝트입니다. YARN 이전의 맵-리듀스에서는 4000노드 이상의 클러스터에서 시스템 확장에 문제가 발생하여 야후(Yahoo)에서 새로 설계하였습니다.

 

 

가장 큰 변화로는 YARN 자체로 맵-리듀스를 구동할 수 있으며추가로 다른 분산 처리 프레임워크(Tez, HBase, Giraph, Spark )을 사용자의 인터페이스 개발만으로 구동이 가능하게 되었습니다.


하둡 2.0 스택 ]


YARN HDFS(Hadoop Distributed File System)의 최상단에서 빅 데이터용 애플리케이션들을 실행하는 대용량 분산 운영체제 역할을 수행합니다. YARN을 이용하면 안정적인 기반에서 배치 작업과 쌍방향 실시간 작업을 수행할 수 있습니다아파치 재단은 YARN을 -리듀스 버전 2(MRv2)’로 명명했습니다.

 

 

YARN의 구조

YARN은 리소스 매니저(Resource Manager)와 노드 매니저(Node Manager) 두 종류의 데몬(Daemon)으로 구성되어 있습니다. Resource Manager는 클러스터 전체를 관리하는 마스터 서버의 하나 존재하고 각 노드마다 Node Manager 존재하며각 프로그램 마다 Application Master가 존재합니다기존의 맵-리듀스에서는 프로그램에서 맵과 리듀스 작업만을 담당했지만, YARN에서는 맵-리듀스 작업도 가능하고 다른 용도의 분산 프로그램 또한 만들수 있습니다그 대표적인 예로 UC Berkeley AMPLab의 Spark나 클라우데라의 임팔라(Impala) 등이 있습니다.


[ YARN의 전체 구성도 ]



리소스 매니저(Resource Manager)의 구조

리소스 매니저(Resource Manager) 내부에는 스케쥴러(Scheduler)와 프로그램 매니저(Application Manager)라는 두개의 메인 컴포넌트로 구성되어 있습니다Scheduler Node Manager들의 자원 상태를 관리하며 부족한 리소스들을 배정합니다또한 프로그램의 상태를 검사하거나 모니터링 하지 않으며순수하게 스케쥴링 작업만 담당합니다프로그램 오류나 하드웨어의 오류로 문제가 발생한 프로그램을 재 시작시켜주지 않으며 프로그램에서 요구하는 리소스(CPU, Disk, 네트워크등)에 관련된 기능만 처리합니다.

 

Application Manager는 Node Manager 데몬에서 특정 작업을 위해서 Application Master를 실행하고, Application Master의 상태를 관리합니다여기서 Application Master라는 용어가 나오는데 YARN에서 실행되는 하나의 작업을 관리하는 마스터 서버를 말합니다.

 

노드 매니저(Node Manager)의 구조

 

노드 매니저는 노드(컴퓨터당 한 개씩 존재합니다해당 컨테이너(Application Container)의 리소스 사용량을 모니터링 하고 관련 정보를 리소스 매니저에게 알리는 역할을 담당합니다프로그램 마스터(Application Master)와 프로그램 컨테이너(Application Container)로 구성되어 있습니다먼저 Application Master는 하나의 프로그램에 대한 마스터 역할을 수행하며 스케쥴러로부터 적절한 Application Container를 할당 받고프로그램 실행 상태를 모니터링하고 관리합니다Application Container는 프로그램에 할당된 자원을 나타냅니다.



[ YARN 상세 구조도 ]



YARN의 맵-리듀스 절차

 사용자에게 맵-리듀스 작업을 요청 받습니다.

 Application Manager Scheduler에게 Node Manager를 할당 받습니다.

 해당 Node Manager Application Master의 실행을 요청 합니다.

 Application Master Scheduler에게 Application Container를 실행하기 위해서 Node Manager의 목록을 할당 받습니다.

 Application Master Application Container를 실행합니다.

 

'빅데이터 > 빅데이터 처리' 카테고리의 다른 글

RDBMS를 통한 데이터 수집  (0) 2017.08.03
R 프로젝트  (0) 2017.08.03
빅 쿼리(Big query)  (0) 2017.08.03
맵-리듀스(Map-Reduce)  (0) 2017.08.03
소셜분석(Social Analysis)  (0) 2017.08.03

+ Recent posts