YARN 관련 자료 정리 2

Apache Hadoop YARN – Concepts & Applications

http://hortonworks.com/blog/apache-hadoop-yarn-concepts-and-applications/
YARN의 분산 어플리케이션을 관리하기 위한 시스템

MRArch

ResourceManager

ResourceManger는 기본적으로 순수한 스케쥴러에 해당한다

시스템의 가용자원을 자원 경쟁중인 어플리케이션에 할당을 중재하는 역할을 한다

cluster utilization을 최적화(항시 모든 자원을 활용할 수 있도록 함)

pluggable scheduler를 가지므로, 상황에 따라 capacity 또는 fair 스케쥴러를 사용할 수 있다

ApplicationMaster

기존의 MRv1과 YARN 사이에는

  • JobTracker – RessourceManager
  • TaskTracker – NodeManager

와 같이 비슷한 개념이 있다. 반면 ApplicationMaster는 YARN에서 새롭게 등장한 개념이다
정의를 따르면

“프레임워크에 종속된 라이브러리의 인스턴스로,ResourceManager로부터 자원을 협상하고NodeManager와 협력하여 컨테이너를 실행하고 컨테이너의 자원 소모를 모니터링할 책임을 갖는다”

ApplicationMaster로 인한 YARN의 특징

확장성(Scale)
기존의 자원관리자에게 있었던 많은 기능/책임을 ApplicationMaster로 이관했고, 이를 통해 시스템 전체는 좀더 극적으로 확장할 수 있다
이를 위해 ResourceManager는 오롯이 순수한 스케쥴러로 동작하도록 설계
이제 ResourceManager는 자원에 대한 fault-tolerance를 제공하지 않으며, 해당 책임은 ApplicationMaster 인스턴스가 갖는다.
어플리케이션마다 별도의 ApplicationMaster 인스턴스가 있으므로, 이제 어플리케이션을 배치방식으로 실행하던 이전의 방식과 달리 병목현상이 없다

개방성(Open)
프레임워크에 종석된 코드는 모두 ApplicationMaster에 있으므로, YARN 시스템은 좀더 범용적이 되며 MapReuce 뿐만 아니라 MPI, 그래프 처리와 같은 다양한 프레임워크를 지원할 수 있다

YARN 설계시 결정한 핵심 표인트

Move all complexity (to the extent possible) to the ApplicationMaster while providing sufficient functionality to allow application-framework authors sufficient flexibility and power.
Since it is essentially user-code, do not trust the ApplicationMaster(s) i.e. any ApplicationMaster is not a privileged service.
The YARN system (ResourceManager and NodeManager) has to protect itself from faulty or malicious ApplicationMaster(s) and resources granted to them at all costs.

자원 모델(Resource Model)

어플리케이션은 ApplicationMaster를 통해 매우 구체적인 자원 요구사항을 요청한다

  • Resource-name (hostname, rackname – we are in the process of generalizing this further to support more complex network topologies with YARN-18).
  • Memory (in MB)
  • CPU (cores, for now)
  • In future, expect us to add more resource-types such as disk/network I/O, GPUs etc.

ResourceRequest와 Container

어플리케이션이 필요한 구체적인 자원 요구사항(resource request)를 ApplicationMaster를 통해 요청한다

Scheduler가 해당 자원 요청에 대해 응답하는데, 이는 container를 승인하는 행위다. container는 ApplicationMaster가 요청한 ResourceRequest에 기술된 자원 요구사항을 만족시킨다.

Leave a Reply

Your email address will not be published. Required fields are marked *