얀이란? / 얀설명/
hadoop 의 YARN
왜 YARN이 필요한가?
Yarn은 이전에 MapReduce2와 Nextgen MapReduce로 불렸다
Yarn을 만든 배경에는 MapReduce 엔진에서 resource allocation 과 job scheduling을 분리하는 것이었다. 따라서 YARN은 클러스터 자원 할당 및 관리를 위해 HDFS(스토리지 시스템)와 MapReduce(처리 엔진) 사이에 중간 레이어를 형성한다.
yarn의 등장은 하둡 생태계를 많은 가능성을 열어주었다. 이 yarn은 MapReduce v1의 한계를 극복하고 스파크, 스톰, 솔르, 테즈와 같은 실행 엔진(execution engine)에 더 나은, 유연하고, 최적화되고, 효율적인 백본을 제공하는 데 성공하였다.
me: 대략적으로 job scheduling 관련해서는 비유가 어렵지만, resource allocation 에 대한 비유를 들자면, 우리가 c/c++ 에서는 malloc/free 를 이용해서 memory 를 직접 handling 해야 했는데, java 가 나오면서 jvm 이 이부분을 대신해줬다. yarn 은 이런 느낌으로 특정부분을 처리하도록 만든 system 이라고 보면 될 것 같다.
Resource manager
- resource 관리: RAM, CPU , network 사용량 같은 cluster 범위의 resource들의 목록(inventory)을 유지 하기 위해 Node manager 와 소통한다.
- 스케쥴 관리 : 단순히 여러 Application Master들이 요청할 때 resource들을 할당해주는 일을 한다. job의 상태를 monitor 하거나 추적하지 않는다.
- application 관리: Resource Manager의 가장 중요한 일이다. 일의 시작과 끝을 보장한다. job 을 수락하고, 그 job을 data server에 있는 Application Master에게 할당한다. 게다가, Application Master의 활동과 상태를 모니터링한다. Application Master가 failure 이면, restart를 한다.
- Hadoop 의 컨테이너들:
- Hadoop v2.0 은 container의 추가로 향상된 parallel processing 을 갖는다.
- 컨테이너들은 추상적인 관념이다. 이 container는 data node에서 multi-tenancy(다중차용, 여러 user가 하나의 sw를 사용하는) 를 지원한다.
- container는, data server의 resource들을 나눠서 container에 넣는 방법으로 메모리, cpu, network 할당의 요구사항 정의하는 방법이다. 이렇게 해서 data server는 여러 container를 hosting 해서 여러 compute job들을 host할 수 있다.
- resource container: resource manager는 container들을 할당해서 resource들을 scheduling 할 책임이 있다. cluster에 의해 제공되는 input, 클러스터 용량, queues, 전체적인 cluster resource들의 우선순위 들과 조화를 이뤄서 수행된다.
Node Manager
- Node Manager 의 주된 목표는 메모리 관리다.
- Node Manager 는 로컬 데이터 서버의 클러스터 인벤토리의 사용 및 상태를 추적하고(CPU, 메모리 및 네트워크와 같은), resource manager 에 정기적으로 상태를 보고한다.
- Node Manager deamon은 모든 데이터 서버에 할당된다. 이렇게 하면 병렬 프로그래밍이 가능해 진다.
Application Master
- Application Master는 병렬 컴퓨팅 작업의 ’실행’을 담당한다.
- 이 deamon(application master)은 job 실행, error를 위한 job 모니터링 및 computer job들의 완료를 담당.
- deamon은 job의 시작시점에 Resource Manager에 의해 시작된다.
- 각 계산 작업(compute job)은 Application Master 1개를 갖는다. 이 application master는 데이터 서버 중 하나에서 실행되고 있다.(running)
- Application master는 마스터 서버의 네임노드에서 data locality 요청한다. 그 다음 Resource Manager의 스케줄러 기능과 ’클러스터 전체 리소스의 컨테이너’에 대해 협상한다.
클라이언트가 요청한 작업의 실행을 위해
- Application Master는 협상된 데이터 서버에
- Mapper container를 할당하고, 컨테이너를 모니터링하고,
- 모든 Mapper 컨테이너가 그들의 task를 완료하면
- Application Master는 reducer를 위한 container를 시작한다.
- Application Master는 Resource Manager 및 클라이언트에 작업 상태를 모두 보고한다.
댓글 없음:
댓글 쓰기