일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- HDP
- airflow
- HIVE
- ambari
- Lambda architecture
- LDAP
- HDFS
- slack
- slack app
- yarn
- 정규표현식
- 빅데이터
- Kafka
- Service
- java
- Scala
- Namenode
- re
- jupyter
- execution_date
- Windows
- NoSQL
- SlackWebhookOperator
- HBase
- Example DAG
- python
- MapReduce
- docker
- 람다 아키텍처
- hadoop
- Today
- Total
IT 삽질기
YARN 스케줄링 본문
YARN 스케줄링
2019/06/10 - [BigData/Hadoop] - Hadoop 1.0과 Hadoop 2.0 (1 YARN)
이전 글에서 YARN이 무엇인지에 대해 간단히 설명했다.
YARN은 Resource Manager과 Application Master, Node Manager등으로 구분되는데 이번에는 YARN에서 작업을 스케줄링하는 방식에 대해서 알아보도록 하자.
YARN은 요청받은 작업에 대해 자원을 할당하고 작업을 처리하게 하는데,
자원은 한정적이고 설정된 스케줄링옵션에 따라 자원을 분배할 것이다.
YARN에서 사용하는 스케줄러 옵션은 3가지이다.
1. FIFO
FIFO는 일반적으로 생각하는 그 FIFO로 먼저 들어온 요청을 처리하는 방식으로 동작한다.
FIFO 방식은 간단하지만, 대형 애플리케이션이 실행되는 경우 다른 애플리케이션이 실행될 수 없기 때문에 클러스터 환경에서는 적합하지 않다.
2. Capacity
Capacity 스케줄러는 전체 자원을 미리 할당한 후 할당 받은 자원을 사용하는 방식으로 동작하는데, 예를 들어 A사용자는 클러스터 자원의 30%를 할당받아 사용하고, B사용자는 70%를 할당받아 사용하는 방식으로 동작한다. 나눠진 큐 안에서는 FIFO 방식으로 동작하며, 이렇게 할당받아 사용하는 경우 A 사용자가 작업할 애플리케이션이 많아 큐가 밀리고 B 사용자는 사용하지 않는 경우 자원을 낭비하게 될 수 있는데 이런 경우에는 A 사용자가 남아있는 70%의 자원을 사용할 수 있게 하는 큐 탄력성이라는 개념이 존재해 자원을 비교적 효율적으로 사용할 수 있다.
3. Fair
Fair 스케줄러는 말 그래도 자원을 균등하게 분배하여 사용하는데, 전체 자원을 할당받아 사용할 수도 있고, 사용자별 할당량을 나눠사용할 수도 있다. 어떤 경우에서든 새로운 애플리케이션 작업이 들어오면 전체를 1/N하여 자원을 할당해 사용하게 되는데 예를 들어 A 애플리케이션만 실행되는 경우 A 애플리케이션이 자원의 100%를 사용하다가 B 애플리케이션이 중간에 실행되면 A 50% B 50% 이런식으로 자원을 할당한다. 위의 두가지 방법보다 클러스터의 효율성도 높고 작은 잡도 빨리 처리되는 효과가 있다
아래의 그림은 스케쥴링 방식을 그림으로 표현한 것이다.
클러스터를 운영하는 경우 위의 3가지 방법중 꼭 하나만 선택해야하는 것은 아니다.
큐를 계층 구조로 만들어 각기 다른 스케쥴링 방식을 설정할 수 있다
root
ㄴ dev
ㄴ test
위와 같은 계층 구조를 만들어 각기 다른 스케쥴링 방식을 적용해 운영하는 것이 가능하다
'BigData > Hadoop' 카테고리의 다른 글
Hadoop 데이터 직렬화와 RPC(Remote Procedure Call) (0) | 2021.06.11 |
---|---|
Hadoop MapReduce 기본 동작방식 (0) | 2021.05.20 |
Apache Hadoop 관련 폐기 프로젝트(2021.04) (0) | 2021.04.15 |
Hadoop3 변경점 (0) | 2021.04.12 |
Hadoop namenode.FSEditLog Error (2) | 2021.04.11 |