이전 포스트 "HDFS 아키텍처"에서 하둡은 분산 저장과 분산 처리를 하기 위한 프레임워크라고 소개를 했었습니다.

  Hadoop 1.x에서는 맵리듀스가 분산처리를 담당했었습니다.
  그러나 배치 처리를 위한 맵리듀스의 한계를 뛰어넘어 다양한 프레임워크에서 HDFS를 효율적으로 액세스 할 수 있는 환경에 대한 요구사항이 발생하게 되었습니다.

  이러한 요구사항에 대한 결과물이 Hadoop 2.x에서부터 도입된 YARN(Yet Another Resource Negotiator)입니다.
  YARN이 도입되면서 자원 관리와 잡 스케쥴링/모니터링 기능이 분리되어 다양한 프레임워크가 안정적으로 클러스터 내에서 작업을 실행할 수 있는 환경이 마련되었습니다.

 

[출처] hortonworks

 

YARN 아키텍처

  YARN 프레임워크는 데이터 연산을 위한 Resource Manager와 Node Manager로 구성되어 있습니다.

  Resource Manager는 중앙에서 클러스터 내 모든 사용 가능한 자원을 모든 응용프로그램 간에 중재하는 역할을 담당합니다.
  Node Manager는 노드별로 존재하며, 노드의 자원 사용량(CPU, 메모리, 디스크, 네트워크)을 모니터링하고 Resource Manager에 보고합니다.

[출처] https://www.edureka.co/blog/introduction-to-hadoop-2-0-and-advantages-of-hadoop-2-0/

 

  Resource Manager에는 Scheduler와 Application Manager라는 두 개의 메인 컴포넌트가 존재합니다.

  Scheduler는 제약 조건(용량, 큐, etc.)에 의거해 실행중인 여러 응용 프로그램에 자원을 할당하는 작업을 수행합니다. Scheduler는 응용 프로그램의 자원 요구 사항에 따라 스케줄링 기능을 수행할 뿐, 응용 프로그램의 실행 상태에 대해서는 관여하지 않습니다.

  Applications Manager는 클라이언트가 제출한 작업을 승인하고 응용 프로그램별 Application Master를 실행하기 위한 Container를 협상합니다. 응용 프로그램이 종료될 때까지 Application Master의 상태를 관리합니다. 

  Application Master는 애플리케이션 별 라이브러리의 인스턴스입니다. Resource Manager와 자원을 협상하여 Container를 할당받으며, Node Manager와 협력하여 Container와 자원 사용 상태를 모니터링합니다.

  Container는 클러스터에 할당된 자원을 의미합니다. Container 안에서 실제적으로 응용 프로그램의 태스크(Task)가 수행됩니다.

 

 

HADOOP 동작 방식

1) 클라이언트 프로그램이 Resource Mananger에게 응용 프로그램을 제출합니다. 제출된 응용 프로그램에는 응용 프로그램별 Application Master를 자체적으로 시작하는 데 필요한 명세서도 포함되어 있습니다.

2) Resource Manager는 Application Master를 시작하기 위한 Container를 협상한 뒤, Application Master를 시작합니다.

3) Application Master가 가동되면 Resource Manager에 등록됩니다. 등록 후 클라이언트 프로그램은 Resource Manager를 쿼리하여 Application Master와 직접 통신할 수 있게 됩니다.

4)  Application Master는 자원 요청(resource-request) 프로토콜을 통해 적절한 자원 Container를 요청합니다.

5) Container를 할당 받으면 Application Master는 Node Manager에 Container 실행 명세서를 제공하고 Container를 시작합니다. 일반적으로 실행 명세서에는 Container가 Application Master와 자체적으로 통신하는 데 필요한 정보가 포함되어 있습니다.

6) Container에서 실행되는 응용 프로그램 코드는 응용 프로그램 명세서(application-specific) 프로토콜을 통해 Application Master에 필요한 정보(진행, 상태 등)를 제공합니다.

7) 클라이언트는 응용 프로그램 명세서(application-specific) 프로토콜을 통해 Application Master로부터 상태 및 진행 상황 등의 정보를 전달받습니다.

8) 응용 프로그램과 필요한 모든 작업이 완료되면 Application Master는 Resource Manager에 등록을 해제하고 종료하게 됩니다.

[출처] https://blog.cloudera.com/apache-hadoop-yarn-concepts-and-applications/

 

 

 

[Ref.] : https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html
            https://blog.cloudera.com/apache-hadoop-yarn-concepts-and-applications/

 

+ Recent posts