본문 바로가기

Tech/Hadoop

[Hadoop]하둡 완벽가이드 요약 (4)

4장


4장은 YARN에 대해서 설명한다.

 

YARN은 하둡 클러스터 자원관리 시스템이다.

하둡 맵리듀스의 성능을 높이기 위해 도입되었으나, 다른 분산 컴퓨팅 도구도 지원한다.

YARN은 리소스매니저와 노드매니저 두 가지 실행 데몬을 통해 서비스를 제공한다.

  • 리소스 매니저는 유일하다. 클러스터 전체 자원 사용량을 관리
  • 노드 매니저는 컨테이너를 구동하고 모니터링 하는 역할

YARN 동작 순서

  • 클라이언트는 리소스매니저에게 어플리케이션 마스터 프로세스 구동을 요청한다.
  • 리소스매니저는 노드매니저를 하나 찾는다.
  • 노드매니저는 어플리케이션을 실행하고(컨테이너) 결과 값을 클라이언트에게 반환한다. 분산처리가 필요할 경우에는 리소스매니저에게 더많은 컨테이너 요청을 하는 경우도 있다.

어플리케이션 수명

  • 사용자의 잡 당 하나의 어플리케이션을 실행.
    • 맵 리듀스가 여기에 해당된다.
  • 워크플로나 사용자의 잡 세션 당 하나의 어플리케이션 실행.
    • spark가 여기에 해당된다.
    • 순차적으로 실행되는 어플리케이션들 간에 컨테이너 재사용 및 공유 데이터 캐싱 가능
  • 서로 다른 사용자들이 공유할 수 있는 장기 실행 어플리케이션
    • 코디네이션 역할을 수행하기도 한다.
    • 장기적 어플리케이션 실행

맵리듀스 1과 2의 차이점

  • 2는 YARN을 이용하여 맵리듀스를 구현한 것이다.
  • 맵 리듀스1
    • 잡트래커: 여러 태스크 크래커에서 실행되는 태스크를 스케쥴링한다.
    • 태스크트래커: 태스크를 실행하고 진행 상황을 잡트래커에 전송한다.
    • 만일 태스크가 실패하게되면 잡트래커는 다른 태스크트래커에게 태스크를 할당한다.
    • 잡트래커는 완료된 잡의 이력을 저장하는 역할을 수행하는데, 이때 부하를 줄이기 위해 히스토리 서버를 별도의 데몬으로 수행한다.
  • 맵 리듀스2
    • 리소스매니저, 어플리케이션 마스터, 노드매니저를 통해 처리한다.
    • 어플리케이션 이력을 저장하는 타임라인 서버가 있다.
  • 확장성
    • 맵리듀스 1은 4,000노드, 40,000 태스크를 넘어서면 병목현상이 발생. 잡트래커가 잡과 태스크를 다 관리하기 때문
    • 맵리듀스 2는 리소스매니저와 어플리케이션 마스터를 나눔으로써, 위 문제를 개선
  • 가용성
    • 맵리듀스 1은 HA를 적용하기 힘들다. 잡트래커의 메모리에 있는 복잡한 상태정보가 매우 빠르게 변동되기 때문
    • 맵리듀스 2는 리소스 매니저와 어플리케이션 마스터로 분리되어 HA 적용 가능
  • 효율성
    • 맵리듀스 1은 맵슬롯과 리듀스 슬롯을 정적으로 할당하고 사용한다.
    • 맵리듀스 2는 리소스풀을 구성한다.

YARN 스케쥴링

  • FIFO, Capacity Fair 스케줄러를 제공한다.
  • FIFO는 공유 클러스터 환경에서 적합하지 않다. 대형 어플리케이션이 수행될 때 모든 자원을 점유 해버릴 수 있기 때문.
  • Capacity 스케줄러는 미리 할당해놓은 분리된 전용 큐에서 작은 잡을 따로 처리해준다.
  • Capacity 스케줄러는 계층 구조로 된 전체 이름을 인식 할 수 없다. 계층의 마지막 부분만 큐 이름으로 사용해야한다.
  • Fair 스케줄러는 모든 잡의 자원을 동적으로 분배한다.
  • Fair 스케줄러는 사용자 사이에만 균등하게 공유된다.
  • YARN의 모든 스케줄러는 지역성 요청을 가장 우선시한다.

지연 스케쥴링

  • 지역성 요구 수준을 조금 낮추고 동일 랙에 컨테이너를 할당하는 방법.
  • YARN의 모든 노드 매니저는 주기적으로 리소스 매니저에게 하트비트 요청을 보낸다.
  • 하트비트를 통해 노드 매니저가 실행중인 컨테이너의 정보와 새로운 컨테이너를 위한 가용 자원을 파악한다.
반응형