베하~~
안녕하십니까!! 인사통의 BTC_김회장, 최총무입니다.
이번 포스팅에서는 Airflow의 Executor에 대해서 설명드리겠습니다!!
새로운 주제인 만큼 열정을 불태워보시죠~
개요
- Airflow Executor란?
- Airflow Executor의 종류
1. Airflow Executor란?
Airflow Executor는 airflow 작업 인스턴스가 실행되는 매커니즘으로, 특정 작업들을 어떤 방식으로 수행할지 결정하는 작업 분배 기능 매커니즘이라 할 수 있습니다!
작업 분배 기능 매커니즘이라고 하면 scheduler와 혼동하기 쉬울 수 있는데요!
Scheduler는 "언제" 작업을 실행할지를 결정하고, Executor는 "어떻게" 그 작업을 실행할지를 결정하는 역할을 합니다. 둘은 서로 다른 역할을 수행하지만, 함께 작동하여 Airflow의 작업 관리와 실행을 조율합니다.
Airflow의 개요 및 동작원리는 앞서 문땅훈과 루피팀에서 작성해주신 Airflow에 대한 문서를 참고해주세요!!
Airflow는 하나 이상의 단계로 구성된 대규모 작업을 개별 태스크로 분할하고 DAG로 형성할 수 있어 전체 파이프라인을 재 실행할 필요가 없는 효율적인 파이프라인 구축이 가능하다는 장점이 있었습니다!
하지만 Executor 종류에 따라서 작업 속도 및 처리 용량에 차이가 발생한다는 사실 알고 계셨나요?
다음 Executor 종류 설명에서 자세히 말씀드리겠습니다!!
2. Airflow Executor의 종류
위에서 말씀드린대로 Executor의 종류에 따라 airflow는 작업 속도 및 처리용량 등에 차이가 발생합니다!!
Executor의 종류는 여러가지 있지만 가장 대표적인 4가지를 통해 설명드리겠습니다.
1. Sequential Executor
- Airflow를 설치하면 기본으로 설정되어있는 Executor
- 간단한 사용 사례나 테스팅에 적합
- 단일 작업만을 한 번에 실행하며, 모든 작업이 순차적으로 실행
2. Local Executor
- Sequential Executor와 달리 task를 병렬로 실행 가능
- 한대의 머신에서 병렬처리를 진행하여 추가적인 인프라가 필요하지 않음
- 해당 Executor는 모두 같은 머신에서 실행되므로, 머신의 리소스에 제한이 발생할 수 있음
3. Celery Executor
- task를 병렬로 실행할 수 있음
- Cluster 형식 구성으로, 분산 작업 큐로서 RabbitMQ, Redis 등의 메시지 브로커가 필요
- 여러 대의 워커 머신에 작업을 분산하여 대량의 작업을 빠르게 처리하는데 용이
- 여러 task를 동일한 워커에서 실행할 수 있어 리소스 효율적으로 활용 가능
4. Kubernetes Executor
- Kubernetes를 사용하여 각각의 task를 독립적인 pod로 실행
- 빠른 확장 및 자원의 효율적 관리에 용이
- 각 task에 대해 별도의 pod를 생성하기에 작은 task가 많은경우 낭비가 있을 수 있음
- 한 워커에서 문제가 발생하더라도 Kubernetes는 자동으로 해당 파드를 재시작하거나 새로운 노드에 스케줄링하여 안정성이 높음
이렇게 Airflow는 다양한 Executor를 제공하고 있으며, 대표로 설명드린 4가지 이외에도 여러가지 Executor가 있습니다.
하지만 이러한 Executor들은 각각의 장단점이 있어 특징들을 이해하고 구축 환경에 알맞는 Executor를 고르는것이 가장 중요하다고 할 수 있습니다.
더욱 상세한 정보 및 설정을 원하시면 아래 Docs를 참고해주시기 바랍니다~
Airflow의 executor를 변경하기 위해서는 Airflow 설치 시 생성되는 airflow.cfg에서 지정 executor를 변경해야 합니다!!
하지만 변경을 위해서는 준비해야하는 작업이 하나 더 있는데요~
바로 MetaDB의 변경작업입니다!
다른 Executor를 사용하려면, 병렬 처리를 지원하기 위한 메시지 큐나 분산 저장소의 설정, 그리고 Airflow metadata DB의 확장이 필요할 수 있기 때문에 MetaDB 변경이 필수적입니다!!
MetaDB는 일반적으로 특정 시스템 또는 응용 프로그램에서 사용되는 메타데이터를 저장하기 위한 데이터베이스를 의미합니다.
여기서 "메타데이터"란 다른 데이터에 대한 데이터를 의미합니다. 메타데이터는 시스템이나 응용 프로그램의 작동 방식에 대한 정보를 포함하며, 종종 시스템 운영에 필요한 설정, 상태 정보, 구조적 정보 등을 저장합니다!
그렇기에 사용자 데이터를 저장하는 일반 DB와는 차이가 있습니다~
이러한 MetaDB에 대해서는 설명드릴 내용이 너무 많으므로 다음시간에 이어서 바로 설명드리겠습니다!!
이번 시간에는 Airflow Executor에 대해 알아보았습니다!!
종류와 설정에 따라서 Airflow의 작업 속도에 영향을 주기때문에 Airflow를 사용하는 엔지니어라면 알아두어야겠죠?😁
앞서 말씀드렸듯이 다음시간에는 Airflow MetaDB를 설명드리는 시간을 가지도록 하겠습니다!!
오늘 배운 Executor와도 관련깊은 부분이니 그때까지 잊어버리면 안되요~
베빠!!
'Database' 카테고리의 다른 글
SQLyog 데이터(csv) 가져오기 (0) | 2023.05.24 |
---|---|
MySQL CRUD 권한 설정 (0) | 2023.05.23 |
Airflow Operator와 Task (0) | 2023.05.19 |
[SQL] 쿼리 사용시 주의사항 (0) | 2023.05.19 |
Apache Superset & 설치 (0) | 2023.05.15 |
댓글