airflow 调度
时间: 2024-12-30 21:24:46 浏览: 14
### 使用 Apache Airflow 设置和管理任务调度
#### 安装与初始化
为了确保可以顺利使用 Apache Airflow 进行任务调度,需先完成安装并验证其正确性。当观察到如下日志输出时表明环境搭建成功:
```
airflow-init_1 | Upgrades done
airflow-init_1 | Admin user airflow created
airflow-init_1 | 2.2.5 start_airflow-init_1 exited with code 0
```
这表示 Airflow 已经被正确部署并且管理员账户已经创建完毕[^1]。
#### 配置 Executor 类型
对于任务较少的情况可以选择 `LocalExecutor` 来简化配置过程而不影响性能表现。此选项允许在同一台机器上顺序运行多个任务实例而无需额外资源分配[^2]。
```python
# 在 airflow.cfg 文件中修改 executor 参数为 LocalExecutor
[core]
executor = LocalExecutor
```
#### 创建 DAG (Directed Acyclic Graph)
定义好要执行的工作流程之后,下一步就是编写 Python 脚本来描述这些操作之间的依赖关系。下面是一个简单的例子来展示如何构建一个包含两个任务的DAG文件:
```python
from datetime import timedelta, datetime
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
with DAG(
dag_id='example_bash_operator',
default_args=default_args,
description='A simple tutorial DAG',
schedule_interval=timedelta(days=1),
start_date=datetime(2023, 8, 17),
catchup=False,
) as dag:
t1 = BashOperator(task_id="print_date", bash_command="date")
t2 = BashOperator(task_id="sleep", bash_command="sleep 5")
t1 >> t2
```
上述代码片段展示了通过Python脚本定义了一个名为`example_bash_operator` 的有向无环图(DAG),其中包含了打印当前日期(`t1`)以及休眠五秒(`t2`)这两个简单任务,并指定了它们之间存在先后次序的关系。
#### 启动 Web Server 和 Scheduler Service
为了让Airflow能够正常运作起来还需要启动Web界面服务(web server)和服务端调度程序(scheduler service):
```bash
# 启动web服务器,默认监听于http://localhost:8080/
$ airflow webserver
# 开启后台调度进程
$ airflow scheduler &
```
此时可以通过浏览器访问 http://localhost:8080 查看已注册的任务列表及其状态信息;同时也可以在此界面上手动触发特定任务或调整参数设置等操作。
阅读全文