Sensor Operator란?
Sensor Operator는 특정 조건이 충족될 때까지 대기하는 Task로, 조건이 만족되면 True를 반환하여 다음 Task로 넘어갑니다. 모든 Sensor는 BaseSensorOperator를 상속하여 구현되며, 반드시 두 가지 메서드를 오버라이딩해야 합니다:
- __init__(): 초기화 메서드로, Sensor의 기본 설정을 정의합니다.
- poke(context): 센싱 로직을 정의하는 메서드로, 특정 조건을 만족하는지 확인합니다.
BaseSensorOperator는 Airflow의 BaseOperator를 상속하며, Sensor의 동작과 모드를 결정하는 다양한 매개변수를 제공합니다.
Airflow docs: https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/sensors/base/index.html
Sensor의 주요 매개변수
- poke_interval: 조건 충족 여부를 주기적으로 확인하는 시간 간격(초 단위).
- timeout: 센싱 대기 시간의 최대값(기본적으로 24시간).
- soft_fail: 센싱 실패 시 Task를 실패로 처리하지 않고 스킵 상태로 변경.
- mode: poke와 reschedule 두 가지 모드 중 하나를 선택.
Mode 유형
Sensor Operator는 두 가지 동작 모드를 제공합니다. 사용 시점에 따라 워크플로우 성능에 큰 영향을 미칠 수 있으므로, 모드를 신중히 선택해야 합니다.
1. Poke Mode
- 특징:
- Task가 Running slot을 점유하며, 일정 시간마다 조건을 체크.
- 상태가 running으로 유지.
- 적합한 상황:
- 센싱 간격이 짧을 경우(초 단위).
- 빠르게 완료되거나 반복적인 조건 확인이 필요한 Task.
- 장점:
- 간단한 작업 흐름.
- 적은 스케줄러 부하.
- 단점:
- 센서가 대기하는 동안 Slot을 점유하므로 리소스 소모가 크다.
2. Reschedule Mode
- 특징:
- 센서가 동작하는 순간에만 Slot을 점유.
- 상태가 up_for_reschedule로 유지.
- 적합한 상황:
- 센싱 간격이 긴 경우(분 단위 이상).
- 리소스 절약이 필요한 대규모 워크플로우.
- 장점:
- 센싱 간격 사이에 Slot을 비워둬 리소스 관리 효율이 높음.
- 단점:
- 스케줄러 부하 발생 가능.
Slot과 Pool 이해하기
Airflow에서 Task는 실행될 때 Slot을 점유합니다. 기본적으로 모든 Task는 default_pool에서 실행되며, 사용자는 Pool을 정의하여 Slot 수를 관리할 수 있습니다.
- Slot: Task 실행 시 점유하는 자원.
- Pool: Slot을 그룹화하여 특정 자원을 Task 그룹에 할당.
모드 선택의 중요성
Airflow 워크플로우가 안정적으로 동작하려면 Sensor의 모드 선택이 중요합니다. Sensor Task가 장시간 동안 Slot을 점유하면 다른 Task가 실행되지 못하는 문제가 발생할 수 있습니다. 특히 다음과 같은 점을 고려해야 합니다:
- 짧은 센싱 간격: poke 모드로 간단히 처리.
- 긴 센싱 간격: reschedule 모드로 리소스 낭비 최소화.
- 대규모 워크플로우: 센서 Task가 많은 경우, reschedule 모드로 전환하여 스케줄러 부담을 줄이는 것이 중요.
Sensor 활용 시 주의사항
- 리소스 관리: 센서 Task의 모드와 Pool 설정을 통해 Slot 점유를 효율적으로 관리합니다.
- 대기 시간 설정: timeout 값을 합리적으로 설정하여 무한 대기를 방지합니다.
- 스케줄러 부담 완화: 대규모 워크플로우에서는 reschedule 모드를 사용하여 스케줄러의 부하를 줄입니다.
'MLOps > Airflow' 카테고리의 다른 글
[Airflow] ExternalTaskSensor: DAG 간 의존성 설정과 활용 (0) | 2024.11.24 |
---|---|
[Airflow] File Sensor에 대하여 (1) | 2024.11.21 |
[Airflow] Provider 패키지 설치 (2) | 2024.11.17 |
[Airflow] PostgreSQL 연동 - Docker Compose를 활용한 설정과 Custom Hook 사용 (0) | 2024.11.16 |
[Airflow] Docker Compose 파일 해석 (1) | 2024.11.14 |