본문 바로가기
BigData 기술/Hadoop

[YARN] 필수개념

by 잇서니 2019. 10. 30.
반응형

YARN 이란

클러스터 리소스를 관리하기 위한 컴포넌트

 

YARN 구성요소

  • Resource Manager (RM)
    • 클라이언트의 작업 요청을 받음
    • Application Master 를 구동함
    • Application Master의 추가 리소스 요청을 받음
    • 클러스터당 1개가 구동됨
      • 운영환경에서 보통 HA 구성을 함

 

  • Node Manager (NM)
    • 컨테이너를 구동함
    • 컨테이너 사용을 모니터링하고, RM에게 알림
    • 노드당 1개씩 구동됨
      • 보통 데이터노드와 노드매니저가 같은 서버에서 구동됨

 

  • Application Master (AM)
    • NM과 통신하면서 application을 실행함
    • 추가 리소스가 필요하면 RM에게 요청함
    • 어플리케이션당 1개씩 구동됨 (hive, spark 등)

 

YARN 리소스 할당 과정

  • (1) client가 RM에게 작업을 요청함
  • (2) RM은 AM을 구동함
  • (3) AM은 application 견적 보고 필요한 리소스를 요청함
  • (4) NM을 통해 application용 컨테이너를 구동함 (map task, reduce task, spark executor 등)
  • (5) 컨테이너 내에서 task를 수행함

 

YARN 리소스 설정

  • nodemanager
    • 노드당 메모리
    • min, max 설정

 

  • scheduler
    • 컨테이너 하나당 메모리
    • min, max 설정

 

  • application
    • mapreduce
      • am (메모리, 힙사이즈, 코어수)
      • map (메모리, 힙사이즈, 코어수)
      • reduce (메모리, 힙사이즈, 코어수)
    • spark
      •  am
      • driver
      • executor

 

스케쥴러

리소스를 어떻게 할당할 지에 대한 정책
작업이 큐에 들어가고 정책에 따라 리소스를 할당받는 형태

 

  • Fifo 스케쥴러
    • 운영환경에선 거의 안씀
    • 모든 잡을 하나의 큐로 관리함
    • 큐의 가장 앞에 있는 잡이 끝나야만 다음 잡이 수행됨

 

  • Fair 스케쥴러
    • 특정 그룹과 큐에 리소스 할당량을 미리 정해놓지 않아도 됨
    • 동적으로 클러스터의 실행되는 잡들이 리소스를 나눠 가짐
    • 단일 큐에서의 정책
      • fair
        • 기본적으로 잡들이 클러스터 리소스를 공평하게 나눠 가짐
        • 잡이 1개이면 모든 리소스를 사용할 수 있음
        • 새로운 잡이 생기면 앞에서 할당한 리소스를 다시 가져와 반띵
        • 새로운 잡이 생기면 앞에서 할당한 리소스를 다시 가져와 삼띵
        • ...이런식
        • 큐에 가중치를 둘 수도 있음. 디폴트는 1 (모든 큐가 공평하게 리소스를 받음)
      • fifo
        • 많이 사용하진 않음
        • 하나의 큐에서 제일 앞에 있는 잡이 끝나야 그 다음 잡이 실행됨
      • drf
        • 메모리뿐만 아니라 cpu도 할당한다는데, YARN에선 많이 안쓴대

 

  • Capacity 스케쥴러
    • 미리 큐마다 할당할 리소스를 설정함
    • 큐마다 최대치도 설정할 수 있음
      • 최대치를 설정 안 하면, 잡이 한 개일 경우 그 큐가 리소스를 모두 사용함
      • 그러다 다른 큐에 잡이 들어오면 리소스 없어서 기다려야 됨
    • 단일 큐에 있는 잡들은 FIFO 방식으로 스케쥴링됨
    • MTO에서 업무시간에 무거운 쿼리 날리는 사용자를 제한하려고 사용했었음
      • 어차피 배치시간(새벽)엔 작업 안 할거니까 배치시간엔 배치작업(단일큐)이 모든 리소스 사용함
      • 어랏 그럼 FIFO 적용됐겠네?
반응형

댓글