Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

YARN

YARN은 HDFS와 함께 하둡의 가장 중요한 구성요소다. YARN은 자원관리, 작업의 스케쥴링과 모니터링의 기능을 가진 별도의 데몬이다. 일종의 분산 커널이라고 볼 수 있다. 기본 아이디어는 RM(ResourceManager)과 애플리케이션별로 AM(ApplicationMater)을 구성하는 거다.

RM은 하둡 클러스터를 구성하는 모든 응용 프로그램을 위해서 자원의 사용을 조정하는 일을 한다. NM(NodeManager)는 각 노드에 설치가 되서 컨테이너와 컨네이터가 사용하는 자원(cpu, memory, disk, netwok)을 모니터링해서 RM에 리포팅 하는 일을 하는 에이전트 프로그램이다.

AM은 프레임워크의 라이브러리로 RM으로 부터 자원을 요청하고 NM과 헙력하여 작업을 실행하고 모니터링 하는 일을 한다.

 YARN 아키텍처

ResourceManager은 ApplicationManager과 Scheduler두 개의 컴포넌트로 구성된다. 분산 커널의 구조를 가지고 있다.
  1. 리소스를 하나의 풀로 묶어서 관리하고
  2. 클러스터의 각 노드로 부터 리소스 사용량을 리포팅 받아서
  3. 리소스 사용량 정보를 이용해서 애플리케이션을 스케쥴링 한다.
하둡에서 애플리케이션은 분산 실행된다. ApplicationManager는 분산된 애플리케이션을 관리하는 일을 한다. 태스크를 실행해야 하는경우 ApplicationManager는 Application Master를 실행하고, 이 Application Master로 하여금 태스트에 할당된 분산 애플리케이션의 관리를 맡긴다. 따라서 태스크당 하나의 Application Master가 존재 할 것이다. 하둡은 컨테이너(container)단위로 리소스를 할당한다. YARN의 RM은 클러스터의 리소스 정보를 토대로 할당 가능한 컨테이너의 개수를 계한하며, 맵리듀스 작업에 이 컨테이너를 할당한다. 컨테이너는 맵리듀스 작업에 할당된 CPU, Memory와 같은 프로퍼티를 가지고 있다.

 Application Manager

YARN 애플리케이션 실행

YARN 애플리케이션을 실행 해보자.

환경

Hadoop 환경을 만들어야 한다. hadoop install문서를 참고하자. 내가 만든 환경은 아래와 같다.
  • VirtualBox
  • Guest OS : Ubuntu 16.04
  • 3 노드 : 1 Master node + 2 Slave node

Word count 실행

MR 하면 나오는 예제 world count다. RFC 문서를 다운로드 했다.
$ https://www.ietf.org/rfc/rfc3261.txt
다운로드한 문서를 HDFS에 올렸다.
$ hadoop fs -mkidr /in
$ hadoop fs -put rfc3261.txt /in 
yarn 애플리케이션을 실행했다.
$ yarn jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /in /out
/out 디렉토리 밑에 결과 파일을 확인 할 수 있다.
$ hadoop fs -ls /out
Found 2 items
-rw-r--r--   2 yundream supergroup          0 2017-03-15 00:28 /out/_SUCCESS
-rw-r--r--   2 yundream supergroup     110295 2017-03-15 00:28 /out/part-r-00000
$ hadoop fs -cat /out/part-r-00000
......
CT      1
California      1
California,     1
Call    8
Call-   1
Call-ID 45
Call-ID,        16
Call-ID.        2
Call-ID:        30
Call-IDs        5
Call-IDs,       1
Call-Info       11
Call-Info:      1
Call/Transaction        2
Call:   1
......

참고