비밀번호

커뮤니티2

  • 맑음속초13.3맑음북춘천1.2맑음철원1.0맑음동두천3.8맑음파주1.8맑음대관령5.0맑음춘천1.6황사백령도10.7황사북강릉12.2맑음강릉11.6맑음동해13.3황사서울7.3황사인천7.6맑음원주2.8황사울릉도10.9맑음수원4.3맑음영월1.2맑음충주1.9맑음서산1.2맑음울진10.1황사청주5.1황사대전3.5구름많음추풍령1.5황사안동4.1맑음상주4.6황사포항8.5구름많음군산3.3황사대구7.5황사전주2.9황사울산7.9황사창원10.5황사광주4.6맑음부산10.7구름많음통영8.9황사목포6.3황사여수8.2황사흑산도6.7구름많음완도5.5구름많음고창1.8구름많음순천6.2황사홍성3.6맑음서청주1.5황사제주8.8구름많음고산9.7구름많음성산9.5구름많음서귀포12.8구름많음진주6.6맑음강화7.0맑음양평3.7맑음이천2.8맑음인제3.9맑음홍천2.1맑음태백6.6맑음정선군1.4맑음제천0.0맑음보은0.6맑음천안0.7맑음보령1.5맑음부여0.7구름많음금산0.9맑음세종1.9구름많음부안3.7구름많음임실0.2구름많음정읍2.4구름많음남원1.5구름많음장수-0.6구름많음고창군2.5구름많음영광군3.5구름많음김해시10.2구름많음순창군1.5구름많음북창원10.3구름많음양산시10.9구름많음보성군5.4구름많음강진군4.5구름많음장흥3.2흐림해남4.7구름많음고흥2.5구름많음의령군3.0구름많음함양군0.8구름많음광양시6.3흐림진도군8.1맑음봉화0.7맑음영주2.6맑음문경2.4맑음청송군1.3맑음영덕7.9맑음의성1.8맑음구미5.0맑음영천5.9맑음경주시7.3구름많음거창0.7흐림합천4.0구름많음밀양8.6구름많음산청3.4구름많음거제10.8구름많음남해10.0구름많음북부산10.8
  • 2026.04.21(화)

데이터 엔지니어링데이터 엔지니어링

[Apache Airflow 2.10.0 Hybrid Executor] 새로 생긴 Multiple Executor 기능을 통해 DAG / Task마다 별도의 Executor로 실행하기

2024년 8월 15일 Airflow의 2.10 버전이 릴리즈되었습니다.

중요한 변경 중 하나는 Hybrid Executor를 구성할 수 있게 된 것입니다.

Airflow는 provider 모듈 포함 많은 Executor를 지원합니다. 각 Executor는 각각 컴퓨팅 효율과 실행시간, 격리 등에 장단점이 있으며 기존의 Airflow에서는 이중 하나의 Executor만을 사용할 수 있었습니다. 

Hybrid Executor를 구성할 수 있음에 따라 DAG 또는 Task는 각각의 워크플로우에 적절한 Executor를 통해 실행될 수 있게 되었습니다.

 

이번 글에서는 단일 Airflow Scheduler 내에서 DAG또는 Task에 따라 여러 Executor를 사용하는 새로운 기능을 소개합니다. 

 

우선 Airflow 구성의 core 항목에서 사용할 executor들을 콤마로 구분하여 정의합니다.

environment:
    AIRFLOW__CORE__PARALLELISM: 3
    AIRFLOW__CORE__EXECUTOR: LocalExecutor,plugins.fargate_executor.AwsFargateExecutor

 

위 예시에서는 LocalExecutor, AwsFargateExecutor 두 Executor를 사용했습니다.

이중 가장 첫 번째의 Executor가 기본적으로 사용되며 DAG또는 Task 내에 실행될 Executor를 명시하지 않는다면 맨 첫 번째의 Executor로 실행되게 됩니다.

 

@task(executor="plugins.fargate_executor.AwsFargateExecutor")
def task_func(**kwargs):
    ...

데코레이터 Task의 경우 task 데코레이터의 파라미터로 Executor의 이름을 넘겨줍니다.

task_op=PythonOperator(
    task_id="t1",
    python_callable=task_func,
    executor="plugins.fargate_executor.AwsFargateExecutor",
)

PythonOperator의 경우 생성자 인자로 executor에 실행할 Executor의 이름을 넘겨줍니다.

 

with DAG(
    dag_id="dag1",
    start_date=pendulum.datetime(2024, 1, 1, 0, 0, 0, tz="Asia/Seoul"),
    schedule_interval=None,
    default_args={
        "executor": "plugins.fargate_executor.AwsFargateExecutor",
    },
) as dag:

DAG default_args의 executor에 Executor이름을 넣어 DAG내 모든 Task들에 적용할 수 있습니다.

 

environment:
    AIRFLOW__CORE__PARALLELISM: 3
   AIRFLOW__CORE__EXECUTORLocalExecutor,plugins.fargate_executor.AwsFargateExecutor:FargateExecutor

콜론(:) 뒤에 별칭을 넣어 사용할 수 있습니다.

 

 

이외 변경점들은 Airflow 공식 문서의 Release Note에서 확인할 수 있습니다.

https://airflow.apache.org/docs/apache-airflow/stable/release_notes.html#airflow-2-10-0-2024-08-15

 

전체댓글0

검색결과는 총 26건 입니다.    글쓰기
1 2