본문 바로가기

Data Mining & Distributed/Airflow

[ Airflow ] max_active_runs - 동시 작업 개수 제한하기

반응형

max_active_runs는 Airflow에서 하나의 DAG가 동시에 실행할 수 있는 최대 인스턴스 수를 제한하는 파라미터입니다. 이 설정을 사용하면 여러 DAG 인스턴스가 동시에 실행되는 것을 방지하고, 시스템에 과부하가 걸리는 것을 방지할 수 있습니다.

 

1. max_active_runs 설정 방법

  • max_active_runs는 기본적으로 16으로 설정되어 있습니다. 즉, 기본적으로 한 DAG에서 동시에 16개의 인스턴스가 실행될 수 있습니다. 이를 더 낮거나 높게 설정할 수 있습니다.
  • 예를 들어, 이 값을 1로 설정하면, DAG가 동시에 한 번만 실행되도록 제한할 수 있습니다.

예제 1: max_active_runs 설정을 사용한 간단한 DAG

from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from datetime import datetime, timedelta

# DAG 정의
dag = DAG(
    'my_dag_with_max_active_runs',
    start_date=datetime(2023, 1, 1),
    max_active_runs=1,  # 동시에 실행되는 최대 DAG 인스턴스 수를 1로 제한
    schedule_interval=timedelta(days=1),  # 하루에 한 번 실행
)

# Dummy task 정의
task1 = DummyOperator(
    task_id='task1',
    dag=dag,
)

task2 = DummyOperator(
    task_id='task2',
    dag=dag,
)

# task 의존성 설정
task1 >> task2

예제 설명

  • max_active_runs=1로 설정하여, 이 DAG는 동시에 한 번만 실행됩니다. 만약 DAG가 실행 중에 새로 스케줄된 DAG 인스턴스가 있더라도, 이전 인스턴스가 완료되기 전에는 실행되지 않습니다.
  • schedule_interval=timedelta(days=1)로 설정하여 DAG가 하루에 한 번 실행되도록 스케줄을 설정했습니다.

예제 2: max_active_runs를 더 높은 값으로 설정

max_active_runs 값을 더 크게 설정하면, 여러 인스턴스가 동시에 실행될 수 있습니다. 예를 들어, max_active_runs=3으로 설정하면, 동시에 최대 3개의 DAG 인스턴스가 실행될 수 있습니다.

dag = DAG(
    'my_dag_with_max_active_runs_3',
    start_date=datetime(2023, 1, 1),
    max_active_runs=3,  # 동시에 실행되는 최대 DAG 인스턴스 수를 3으로 제한
    schedule_interval=timedelta(days=1),  # 하루에 한 번 실행
)

task1 = DummyOperator(
    task_id='task1',
    dag=dag,
)

task2 = DummyOperator(
    task_id='task2',
    dag=dag,
)

task1 >> task2

이 경우, DAG가 동시에 3번까지 실행될 수 있기 때문에, 만약 4번째 DAG 인스턴스가 예약되면 1개의 DAG 인스턴스가 완료될 때까지 대기하게 됩니다.

max_active_runs 활용 예시

max_active_runs는 예를 들어, 시간이 오래 걸리는 작업을 실행할 때 유용합니다. 여러 인스턴스가 동시에 실행되면 리소스가 과부하될 수 있으므로, 이 값을 조정하여 리소스 소모를 제한할 수 있습니다.

 

2. 예시 시나리오:

  • DAG가 매일 실행되며, 데이터 처리 작업이 오래 걸리는 경우, max_active_runs를 1로 설정하여 하나의 DAG 인스턴스가 완료되기 전에는 다른 인스턴스가 실행되지 않도록 할 수 있습니다.
  • 예를 들어, 중요한 데이터 파이프라인이 여러 개의 단계를 포함하는데, 이전 단계가 완료되지 않으면 다음 단계를 실행할 수 없을 때 max_active_runs=1을 설정하는 것이 좋습니다.

 

3. 결론

  • max_active_runs는 DAG 인스턴스가 동시에 실행되는 수를 제한합니다.
  • 이를 통해 시스템 과부하를 방지하고, 특히 리소스가 많이 소모되는 작업을 안정적으로 실행할 수 있습니다.
  • 값을 적절히 설정하면 DAG 실행을 효율적으로 관리할 수 있습니다.

Airflow에서 DAG가 동시에 실행되는 수를 제어하는 데 중요한 역할을 하므로, 시스템의 용량이나 작업의 특성에 맞게 이 설정을 조정하는 것이 좋습니다.

반응형