반응형
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
- mapreduce
스케쥴러
리소스를 어떻게 할당할 지에 대한 정책
작업이 큐에 들어가고 정책에 따라 리소스를 할당받는 형태
- Fifo 스케쥴러
- 운영환경에선 거의 안씀
- 모든 잡을 하나의 큐로 관리함
- 큐의 가장 앞에 있는 잡이 끝나야만 다음 잡이 수행됨
- Fair 스케쥴러
- 특정 그룹과 큐에 리소스 할당량을 미리 정해놓지 않아도 됨
- 동적으로 클러스터의 실행되는 잡들이 리소스를 나눠 가짐
- 단일 큐에서의 정책
- fair
- 기본적으로 잡들이 클러스터 리소스를 공평하게 나눠 가짐
- 잡이 1개이면 모든 리소스를 사용할 수 있음
- 새로운 잡이 생기면 앞에서 할당한 리소스를 다시 가져와 반띵
- 새로운 잡이 생기면 앞에서 할당한 리소스를 다시 가져와 삼띵
- ...이런식
- 큐에 가중치를 둘 수도 있음. 디폴트는 1 (모든 큐가 공평하게 리소스를 받음)
- fifo
- 많이 사용하진 않음
- 하나의 큐에서 제일 앞에 있는 잡이 끝나야 그 다음 잡이 실행됨
- drf
- 메모리뿐만 아니라 cpu도 할당한다는데, YARN에선 많이 안쓴대
- fair
- Capacity 스케쥴러
- 미리 큐마다 할당할 리소스를 설정함
- 큐마다 최대치도 설정할 수 있음
- 최대치를 설정 안 하면, 잡이 한 개일 경우 그 큐가 리소스를 모두 사용함
- 그러다 다른 큐에 잡이 들어오면 리소스 없어서 기다려야 됨
- 단일 큐에 있는 잡들은 FIFO 방식으로 스케쥴링됨
- MTO에서 업무시간에 무거운 쿼리 날리는 사용자를 제한하려고 사용했었음
- 어차피 배치시간(새벽)엔 작업 안 할거니까 배치시간엔 배치작업(단일큐)이 모든 리소스 사용함
- 어랏 그럼 FIFO 적용됐겠네?
반응형
'BigData 기술 > Hadoop' 카테고리의 다른 글
[HDFS] Rack Awareness 란 (911) | 2020.07.15 |
---|---|
[HDFS] 네임노드 SafeMode 켜지는 경우 (4) | 2020.07.14 |
[HDFS] 데이터노드 추가/삭제/디스크고장 조치 (4) | 2019.10.30 |
HDFS 주요 개념 - 네임노드, 데이터노드 (2) | 2019.10.28 |
[HDFS] 네임노드 개념과 HA(High Availability, 고가용성) 구성 (2) | 2019.10.15 |
댓글