티스토리 뷰


> 하둡의 진화 YARN(Yet Another Resource Negotiator) #1 먼저 읽기 <

 

 

3. 하둡 2.0

3.1. 하둡2.0 구성요소

출처 : http://www.edureka.in/blog/introduction-to-hadoop-2-0-and-advantages-of-hadoop-2-0/

 

Resource Manager

 

클러스터마다 존재하며, 클러스터 전반의 자원 관리와 테스크들의 스케쥴링을 담당한다  클라이언트로부터 애플리케이션 실행 요청을 받으면 그 애플리케이션의 실행을 책임질 Application Master를 실행한다. 또한 클러스터 내에 설치된 모든 Node Manager와 통신을 통해서 각 서버마다 할당된 자원과 사용중인 자원의 상황을 알 수 있으며, Application Master들과의 통신을 통해 필요한 자원이 무엇인지 알아내어 관리하게 된다.

Resource Manager내부에는 여러 개의 컴포넌트들이 존재하며, Scheduler, Application Manager, Resource Tracker 세개의 메인 컴포넌트가 있다.

 

Scheduler

Node Manager들의 자원 상태를 관리하며 부족한 리소스들을 배정한다. Scheduler 는 프로그램의 상태를 검사하거나 모니터링 하지 않으며, 순수하게 스케쥴링 작업만 담당한다. 스케쥴링이란 자원 상태에 따라서 테스크들의 실행 여부를 허가해 주는 역할만 담당하며, 그 이상의 책임은 지지 않다. , 프로그램 오류나 하드웨어의 오류로 문제가 발생한 프로그램을 재 시작시켜주지 않으며, 프로그램에서 요구하는 리소스(CPU, Disk, 네트워크등)에 관련된 기능만 처리한다.

 

Application Manager

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

 

Resource Tracker

Container가 아직 살아 있는지 확인하기 위해서, Application Master재 시도 최대 횟수, 그리고 Node Manager가 죽은 것으로 간주 될 때까지 얼마나 기다려야 하는지 등과 같은 설정 정보를 가지고 있다.

 

Node Manager

노드 당 한개씩 존재한다. 해당 Container의 리소스 사용량을 모니터링 하고, 관련 정보를 Resource Manager에게 알리는 역할을 담당한다. Application Master Container로 구성되어 있다.

 

Application Master

하나의 프로그램에 대한 마스터 역할을 수행하며, Scheduler 로부터 적절한 Container를 할당 받고, 프로그램 실행 상태를 모니터링하고 관리한다.

 

Container
CPU, 디스크(Disk), 메모리(Memory) 등과 같은 속성으로 정의된다. 이 속성은 그래프 처리(Graph processing) MPI와 같은 여러 응용 프로그램을 지원하는데 도움이 된다. 모든 작업(job)은 결국 여러 개의 테스크로 세분화되며, 각 테스크는 하나의 Container 안에서 실행이 된다. 필요한 자원의 요청은 Application Master가 담당하며, 승인 여부는 Resource Manager가 담당한다. Container 안에서 실행할 수 있는 프로그램은 자바 프로그램뿐만 아니라, 커맨드 라인에서 실행할 수 있는 프로그램이면 모두 가능하다.

 

 

3.2. 하둡 2.0 동작방식

출처 : http://hortonworks.com/blog/apache-hadoop-yarn-concepts-and-applications/

클라이언트는Application Master 자체를 실행하는 필요한 데이터를 포함하는 응용프로그램을 제출한다.

Resource ManagerContainer 할당을 책임지는 Application Master을 시작합니다.

Application MasterResource Manager에 등록되고 클라이언트가 Resource Manager과 통신할 수 있게 된다.

Application Masterresource-request프로토콜을 통해 적절한 리소스의 Container 를 요청한다.

Container 가 성공적으로 할당되면, Application MasterContainer 실행 스펙를 Node Manager에게 제공하여 Container 를 실행시킨다. 실행 스펙를 일반적으로 Container Application Master 그 자체와 통신하기 위해 필요한 정보를 포함하고 있다.

응용프로그램 코드는 Container 에서 실행되고 진행률, 상태 등의 정보를 응용프로그램-스펙 프로토콜을 통해 응용프로그램의 Application Master 에게 제공한다.

응용프로그램 실행 중 클라이언트는 상태, 진행률 등을 얻기 위해 Application Master 와 응용프로그램-스팩 프로토콜을 통해 직접 통신한다.

일단 응용프로그램이 완료되고 모든 필요한 작업이 종료되면, Application Master Resource Manager로의 등록을 해제하고 자신의 컨테이너를 다른 용도로 사용할 수 있도록 종료한다.

 

Resource Manager 는 기본적으로 순수하게 하둡 클러스터의 전체적인 리소스 관리만을 담당하는 심플한 모듈이다.
현재 가용한 리소스들에 대한 정보를 바탕으로 이러한 리소스들을 각 애플리케이션에 일종의 정책으로서 부여하고 그 이용 현황을 파악하는 업무에 집중한다.

Application Master Resource Manager 과 협상하여 하둡 클러스터에서 자기가 담당하는 어플리케이션에 필요한 리소스를 할당받고 Node Manager 과 협의하여 자기가 담당하는 어플리케이션을 실행하고 그 결과를 주기적으로 모니터링한다. 자기가 담당하는 애플이케이션의 실행 현황을 주기적으로 Resource Manager 에게 보고한다.


Application Master
의 정확한 정의는 특정 프레임워크 (MapReduce, Storm 등 다양한 어플리케이션) 별로 잡(Job)을 실행시키기 위한 별도의 라이브러리이다. 예를 들면, 기존의 MapReduceMapReduce Application Master 에서, 기존의 스트리밍 처리는 스톰(Storm) Application Master 에서 각자 담당하고 책임을 지게 된다.

, 특정한 어플리케이션의 처리 라이브러리를 Application Master 에 올림으로써 하나의 하둡 클러스터에서 다양한 어플리케이션이 돌아 가도록 하는 것이 핵심이다. 이러한 구조의 변화에 의해서 사용자는 데이터의 속성에 맞는 다양한 어플리케이션을 처리하는 별도의 Application Master 을 만들어서 확장시킬 수 있다.

 

4. 하둡1.0 과 하둡2.0 비교

 

5. 하둡2.0을 활용한 배포판 소개

<맵알(MAPR) 하둡 플랫폼>

출처 - http://www.acrofan.com/ko-kr/commerce/content/20140623/0001030201

맵알은 하둡 클러스터 내에서 다양한 버전의 하둡 플랫폼을 동시 지원하며, 실시간 데이터 처리를 현실적으로 구현할 수 있다. 기존 MapReduce(MapReduce)는 배치 작업 형태였지만, 스파크(Spark)는 하둡에 저장되는 하둡에 저장되는 데이터를 바로 분석, 비즈니스에 능동 대처할 수 있도록 한다. 특히 MapReduce를 통해 만들어야 했던 코드를 스파크를 활용하면 짧고 간단하게 바꾸어, 크게는 수백배까지 큰 폭의 성능 향상을 얻을 수 있다.

<호튼웍스(Hortonworks) HDP 2.0>

HDP 2.0은 하둡2YARN 아키텍처를 포함한다. YARN MapReduce2로도 불리는 리소스 관리 엔진으로, 프로세싱 엔진과 앱에 하드웨어 리소스를 분배하고 관리한다. YARN 도입으로 하둡은 MapReduce뿐 아니라 다양한 데이터처리엔진을 쉽게 플러그인할 수 있다. 호튼웍스는 HDP 2.0을 통해 여러 하둡 스택도 최신 버전으로 업데이트했다. HBASE, 피그, 스쿱, 우지, 주키퍼, 머하웃, 암바리 등이 최신버전으로 탑재됐다.

 

<클라우데라(Cloudera) CDH 4.0>

 

 

클라우데라는 CDH 4.0 부터 YARN 을 지원하고 있다. 배포판에는 SQL 쿼리를 이용해 HDFS에 저장된 데이터를 실시간 처리하는 엔진인 임팔라(Impala)와 실시간으로 데이터를 분석하는 스파크(Spark)가 탑재되어 있다.

 

  

글) Infra서비스 1팀 김영석 차장(daimang@sk.com)