하둡의 구성 요소 중 핵심 프레임워크인 Yarn에 대해 알아본다.
하둡이란?
HDFS(Hadoop Distributed FileSystem)란?
맵리듀스(MapReduce)란?
developer-woong.tistory.com/10
얀(yarn):
리소스 관리와 컴포넌트 처리를 분리한 하둡 2.0에 도입된 아파치 재단의 서브 프로젝트
MapReduce의 차세대 기술로서 MapReduce의 확장성과 속도 문제를 해소하기 위한 프로젝트
기존 MapReduce에서는 4000개 이상의 노드 클러스터에서 확장에 대한 이슈가 발생하여 야후(Yahoo)에서 새롭게 설계
초기 하둡1에서는 잡트래커가 애플리케이션의 라이프 사이클 관리, 클러스터 리소스 관리를 모두 담당하여 병목현상이 발생하였다. 잡트래커 한 대가 모든 클러스터의 노드들, 애플리케이션들을 관리하여야 했기 때문에 잡트래커에 많은 메모리를 할당 해야 했고, 최대 4000대의 노드까지만 관리할 수 있었다. 또한 잡트래커의 애플리케이션은 맵리듀스 작업만 처리 가능하여 유연성이 부족하였고 SQL기반 작업, 인메모리 기반 작업 처리에 어려움이 있었다.
이러한 단점을 극복하기 위하여 얀(Yarn) 아키텍처가 도입된다.
얀(Yarn)은 하둡 분산 파일시스템(HDFS)의 상단에서 대규모 데이터 처리 어플리케이션들을 실행하는 운영체제 역할을 수행한다. 잡트래커의 기능을 분리하여 자원 관리는 리소스 매니저와 노드매니저, 애플리케이션 라이프 사이클 관리는 애플리케이션 마스터와 컨테이너가 담당한다.
얀(Yarn)을 이용하면 안정적인 배치 작업과 양방향 실시간 작업 수행이 가능해지고 하둡 클러스터의 전사적인
자원, 라이프 사이클 관리, 다양한 애플리케이션 실행 등을 지원하고 최대 1만개의 노드 관리가 가능하다.
(* 아파치 재단은 얀(Yarn)을 맵-리듀스 버전2로 명명함.)
[얀(Yarn) 2.0 스택]
얀(Yarn)의 구조:
리소스 매니저(Resouce Manager) | - 스케줄러, 애플리케이션 매니저, 리소스 트랙커로 구성 (* 스케줄러(Scheduler): 노드 매니저들의 자원 상태를 관리하며 부족한 리소 스들을 배정, 프로그램 상태를 검사하거나 모니터링 하지 않고, 순수하게 스케줄링 작업만 담당 * 스케줄링(Scheduling): 자원 상태에 따라 태스크(task)단위의 작업들의 실행여부를 허가해주는 역할을 담당, 그 이상의 책임은 X *애플리케이션 매니저(Application Manager): 노드매니저에서 특정 작업을 위해 애플리케이션 마스터를 실행, 상태 관리 * 리소스 트랙커(Resource Tracker): 컨테이너가 아직 살아 있는지 확인 하기 위해 애플리케이션 마스터 재 시도 최대 횟수, 노드매니저가 죽은 것으로 간주 될 때까지의 대기 시간 추출 등과 같은 설정 정보를 가짐) - 자원 분배 시 스케줄러(Scheduler)에 설정된 규칙에 따라 효율적 자원 분배 - 노드매니저로부터 전달받은 정보를 활용, 클러스터 전체를 관리하는 마스터 서버 역할 - 자원 사용 상태의 모니터링 - 애플리케이션 마스터에서 자원요청 시 비어있는 자원 사용 가능하도록 처리 |
노드 매니저(Node Manager) | - 각 노드당 하나씩 존재 - 애플리케이션 마스터(Application Master)와 애플리케이션 컨테이너(Application Container)로 구성 (* 애플리케이션 마스터: 하나의 프로그램, 작업(task)에 대한 마스터역할 수행 스케줄러로부터 적절한 애플리케이션 컨테이너를 할당받고, 프로그램 실행 상태를 모니터링 및 관리 * 애플리케이션 컨테이너: 프로그램에 할당된 자원을 나타냄) - 현재 노드의 자원 상태를 관리, 리소스매니저에게 현재 자원상태 보고 - 노드매니저는 리소스 매니저의 지시를 받아 작업 요구사항에 따라서 컨테이너를 생성 |
애플리케이션 마스터 (Application Master) | - 노드매니저와 함께 번들로 재공, 작업당 하나씩 생성 - 컨테이너를 사용하여 작업 모니터링과 실행을 관리 - 리소스매니저와 작업 자원 요구사항 협상, 작업 완료를 위한 책임 |
컨테이너 (Container) | - CPU, 디스크, 메모리 등과 같은 속성으로 정의 - 모든 작업(job)은 여러 개의 태스크(task)으로 세분화되고 각 태스크(task)은 하나의 컨테이너(container) 안에서 실행이 된다. - 필요 자원 요청은 애플리케이선 마스터가 담당 - 승인 여부는 리소스매니저가 담당 - 컨테이너 안에서 실행 가능한 프로그램은 자바 프로그램뿐만 아닌, 커맨드 라인에서 실행 가능한 프로그램이면 모두 실행 가능 |
[얀(Yarn) 구성도]
라이프 사이클(Life Cycle)관리:
애플리케이션의 라이프 사이클 관리는 애플리케이션 마스터와 컨테이너를 이용하여 처리한다.
- 클라이언트가 리소스 매니저에 애플리케이션을 제출
- 리소스 매니저는 비어있는 노드에서 애플리케이션 마스터를 실행
- 애플리케이션 마스터는 작업 실행을 위한 자원을 리소스 매니저에 요청 후 자원을 할당받고 각 노드에 컨테이너 실행 및 실제 작업을 진행 (* 컨테이너는 실제 작업이 실행되는 단위)
- 컨테이너에서 작업 종료 시 결과를 애플리케이션 마스터에게 알리고 애플리케이션 마스터는 모든 작업이 종료되면 리소스매니저에게 알린 후 자원을 해제
[얀(Yarn) 라이프 사이클(Life Cycle)]
다양한 애플리케이션:
얀(Yarn)은 맵리듀스 API로 구현된 프로그램 외 다양한 애플리케이션을 실행 가능
맵리듀스, 피그, 스톰, 스파크 등 하둡 에코시스템의 다양한 데이터 처리기술을 이용할 수 있다.
하둡 에코시스템이란?
얀(Yarn)의 작업 순서:
1. 클라이언트가 새 응용 프로그램의 요청을 위해 리소스 매니저에 접근
2. 리소스매니저는 애플리케이션 아이디를 클라이언트에게 전송
3. 클라이언트는 메모리, CPU, 우선 순위 등과 같은 세부적인 요구 사항들을 요청하는 Application Submission Request 생성
4. 애플리케이션 매니저가 클라이언트의 요청을 받고 노드 매니저에게 작업(job)당 한 하나의 애플리케이션 마스터를 생성 요청
5. 이에 노드매니저가 애플리케이션 마스터 생성
6. 애플리케이션 마스터는 리소스 매니저에게 리소스 할당에 대한 요청을 생성하고 작업(job)이 종료될 때까지 작업에 대한 책임을 짐
7. 리소스 매니저는 컨테이너의 리스트를 반환
8. 애플리케이션 마스터는 노드 매니저에게 특정 작업 컨테이너 시작을 요청
9. 노드매니저는 컨테이너를 생성하고 컨테이너는 클라이언트의 특정 코드를 실행
10. 애플리케이션 매니저는 작업(job)이 완료될때까지의 작업 실행을 관리
11. 클라이언트는 응용 프로그램의 상태 보고서 요청
필요 지식:
주키퍼(Zookeeper)란?
developer-woong.tistory.com/11
고가용성(HA:High Availability)이란?
developer-woong.tistory.com/12
[참고2]wikidocs.net/22899
감사합니다!!
'BigData > Hadoop' 카테고리의 다른 글
(하둡 기초) ep06_주키퍼(Zookeeper)란? (0) | 2021.02.04 |
---|---|
(하둡 기초) ep04_ MapReduce 맵리듀스란? (0) | 2021.02.04 |
(하둡 기초) ep03_하둡 분산 처리 파일시스템(HDFS:Hadoop Distributed FileSystem) (0) | 2021.02.03 |
(하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) (0) | 2021.02.03 |
(하둡 기초) ep01_하둡(Hadoop)의 역사와 특징 (0) | 2021.02.03 |