Apache Airflow 是一个流行的开源工具,用于编排、调度和监视复杂的数据处理流程。它通过 Dag 定义和任务实现,使得用户可以轻松地编排和调度数据处理流程。在 Airflow 中,有两个核心概念:编排引擎和执行引擎。这两个概念之间的差异可以导致一些混淆和困惑。
编排引擎是 Airflow 中的核心组件。它负责定期调度 Dag 并将所有任务组织成有向无环图(DAG)。当 DAG 实例化并开始执行后,编排引擎将 DAG 图的控制权传递给执行引擎,执行引擎负责执行单个任务的调度和运行。简言之:编排引擎是一个调度程序,而执行引擎是实际执行任务的程序。
要理解编排引擎和执行引擎之间的关系,我们可以看下面的示例。在这个示例中,我们将使用 Python 操作符实现一个简单的 DAG 并将其提交到 Airflow。
首先,我们将需要导入所需的 Python 模块和操作符:
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
接下来,定义 DAG:
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2022, 1, 1),
'email': ['airflow@example.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
dag = DAG(
'my_dag',
default_args=default_args,
description='A simple tutorial DAG',
schedule