Airflow에서 하나의 DAG 내에서 동시에 실행되는 작업의 수를 제한하려면 여러 가지 방법을 사용할 수 있습니다. 주요 방법으로는 DAG 수준과 Task 수준에서 동시 실행 수를 제한하는 설정이 있습니다.
1. DAG 수준에서 동시 실행 제한
max_active_runs
파라미터를 사용하여 하나의 DAG 내에서 동시에 실행될 수 있는 DAG 인스턴스의 수를 제한할 수 있습니다.
max_active_runs
: 이 파라미터는 DAG가 동시에 실행할 수 있는 최대 인스턴스 수를 제한합니다. 예를 들어, 이 값을 1로 설정하면 하나의 DAG 인스턴스만 실행됩니다.
from airflow import DAG
from datetime import datetime
dag = DAG(
'my_dag',
start_date=datetime(2023, 1, 1),
max_active_runs=1, # 최대 활성화된 DAG 인스턴스를 1개로 제한
)
2. Task 수준에서 동시 실행 제한
각 개별 작업(Task)에서 동시에 실행되는 인스턴스 수를 제한하려면 concurrency
또는 task_concurrency
를 사용할 수 있습니다.
concurrency
: 전체 DAG 내에서 동시에 실행할 수 있는 작업의 최대 수를 설정합니다. 이는 DAG 내 모든 작업에 대해 동시 실행 제한을 설정하는 것입니다.task_concurrency
: 특정 작업(Task)에서 동시에 실행할 수 있는 인스턴스의 수를 설정합니다.
2.1 DAG 전체의 동시 실행 작업 수 제한
DAG 수준에서 concurrency
를 설정하여 동시에 실행되는 작업 수를 제한할 수 있습니다.
dag = DAG(
'my_dag',
start_date=datetime(2023, 1, 1),
concurrency=5, # 최대 5개의 작업을 동시에 실행
)
2.2 개별 작업의 동시 실행 수 제한
각 작업(Task)에 대해 task_concurrency
를 설정하여 해당 작업의 동시 실행 수를 제한할 수 있습니다.
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from datetime import datetime
dag = DAG(
'my_dag',
start_date=datetime(2023, 1, 1),
)
task1 = DummyOperator(
task_id='task1',
dag=dag,
task_concurrency=3, # 이 작업은 최대 3개 인스턴스가 동시에 실행 가능
)
task2 = DummyOperator(
task_id='task2',
dag=dag,
task_concurrency=2, # 이 작업은 최대 2개 인스턴스가 동시에 실행 가능
)
3. Pool을 사용하여 작업 실행 수 제한
Airflow에서는 Pool을 사용하여 여러 작업의 동시 실행 수를 제한할 수 있습니다. Pool은 여러 작업에 대해 리소스를 할당하고, 각 작업이 해당 리소스를 사용할 수 있도록 제한을 두는 방식입니다.
- Pool은 Airflow UI에서 설정하거나, 코드에서
pool
파라미터를 사용하여 설정할 수 있습니다.
3.1 Pool 생성
Airflow UI나 CLI를 사용하여 Pool을 생성할 수 있습니다. 예를 들어, CLI에서 다음 명령어로 Pool을 생성할 수 있습니다:
airflow pools set my_pool 5 "My custom pool" 5
위 명령은 이름이 my_pool
인 풀을 생성하고, 풀에 할당된 리소스를 동시에 사용할 수 있는 작업 수를 5로 설정합니다.
3.2 Task에서 Pool 사용
작업을 실행할 때 해당 작업에 풀을 할당하면, 해당 작업은 풀의 리소스를 사용하게 되어 동시 실행 수를 제한할 수 있습니다.
task1 = DummyOperator(
task_id='task1',
dag=dag,
pool='my_pool', # 'my_pool' 풀을 사용
)
4. 결론
max_active_runs
는 하나의 DAG 내에서 동시에 실행될 수 있는 DAG 인스턴스 수를 제한합니다.concurrency
와task_concurrency
는 각각 DAG 전체와 개별 Task에서 동시 실행 수를 제한합니다.- Pool을 사용하면 특정 리소스를 공유하는 작업들의 동시 실행 수를 제한할 수 있습니다.
이 방법들을 조합하여 Airflow에서 작업의 동시 실행 수를 효율적으로 관리할 수 있습니다.
'Data Mining & Distributed > Airflow' 카테고리의 다른 글
[ Airflow ] ubuntu + Airflow + postgresql + dask - 설치하기 (0) | 2025.01.14 |
---|---|
[ Airflow ] max_active_runs - 동시 작업 개수 제한하기 (0) | 2025.01.02 |
[ Airflow ] concurrency - 동시 작업 개수 제한하기 (0) | 2025.01.02 |
[ Airflow ] task_concurrency - 동일 작업 개수 제한하기 (0) | 2025.01.02 |
[ Airflow ] RestAPI 사용하기 (0) | 2024.12.31 |