Airflow 入门指南:轻松管理工作流

Airflow 是一个开源的工作流管理系统,最初由 Airbnb 开发。它使用有向无环图(DAG)来定义任务之间的依赖关系,并支持多种执行器以适应不同的环境。下面我们将一步步介绍如何安装和使用 Airflow。

Airflow 的主要组件

Airflow 由以下几个关键组件构成:

  1. 调度器(Scheduler) :监控 DAG 并根据依赖关系调度任务。
  2. 网页服务器(WebServer) :提供用户界面,用于监控和管理工作流。
  3. 数据库(Database) :存储 DAG 和任务的状态信息。
  4. 执行器(Executor) :决定如何执行任务,常见的有 SequentialExecutor、LocalExecutor、CeleryExecutor 等。

安装 Airflow

要开始使用 Airflow,首先需要安装它。以下是安装步骤:

  1. 安装 Python:确保系统中已安装 Python 3.6 或更高版本。

  2. 安装 Airflow

    复制代码
    bash
    pip install apache-airflow
  3. 初始化 Airflow

    csharp 复制代码
    bash
    airflow db init

创建第一个 DAG

创建一个简单的 DAG 来了解 Airflow 的基本用法。

  1. 创建 DAG 脚本 :在 ~/airflow/dags 目录下创建一个名为 hello.py 的文件。

    ini 复制代码
    python
    from datetime import datetime, timedelta
    from airflow import DAG
    from airflow.operators.bash_operator import BashOperator
    
    default_args = {
        'owner': 'airflow',
        'depends_on_past': False,
        'start_date': datetime(2023, 3, 1),
        'retries': 1,
        'retry_delay': timedelta(minutes=5),
    }
    
    dag = DAG(
        'hello',
        default_args=default_args,
        schedule_interval=timedelta(days=1),
    )
    
    task_1 = BashOperator(
        task_id='print_date',
        bash_command='date',
        dag=dag,
    )
    
    task_2 = BashOperator(
        task_id='print_hello',
        bash_command='echo "Hello World!"',
        dag=dag,
    )
    
    task_1 >> task_2
  2. 启动 Airflow Web 服务器和调度器

    css 复制代码
    bash
    airflow webserver -p 8080 -D
    airflow scheduler -D
  3. 访问 Airflow Web 界面 :浏览器打开 http://localhost:8080,在界面中可以看到并触发 DAG。

常用命令

以下是一些常用的 Airflow 命令:

  • 查看所有 DAGairflow dags list
  • 查看 DAG 中的任务airflow list_tasks hello
  • 触发 DAG 运行 :在 Web 界面中点击触发按钮,或使用命令行 airflow trigger_dag hello

监控和管理

Airflow 提供了强大的监控和管理功能:

  • 查看任务状态:在 Web 界面中点击 DAG 名称,查看任务执行状态。
  • 查看日志:点击任务名称,查看详细日志。

案例:使用 Airflow 调度 Python 脚本

如果你想使用 Airflow 调度一个 Python 脚本,可以使用 PythonOperator。以下是一个例子:

ini 复制代码
python
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.python_operator import PythonOperator

def print_hello():
    print("Hello World!")

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2023, 3, 1),
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
}

dag = DAG(
    'hello_python',
    default_args=default_args,
    schedule_interval=timedelta(days=1),
)

task = PythonOperator(
    task_id='print_hello',
    python_callable=print_hello,
    dag=dag,
)

通过这些步骤,你可以成功安装和使用 Airflow 来管理和调度工作流。

相关推荐
语戚5 小时前
力扣 3161. 块放置查询:线段树解法(Java 实现)
java·算法·leetcode·面试·线段树·力扣·
天天进步20155 小时前
Python全栈项目实战:从零构建校园心理健康咨询平台
面试·职场和发展
阿里嘎多学长6 小时前
2026-06-01 GitHub 热点项目精选
开发语言·程序员·github·代码托管
IT_陈寒6 小时前
Python闭包里藏的这个坑,差点让我加班到凌晨
前端·人工智能·后端
IT_陈寒6 小时前
Java注解空指针?这个坑我踩得莫名其妙
前端·人工智能·后端
JAVA社区6 小时前
Java高级全套教程(十一)—— Kubernetes 超详细企业级实战详解
java·运维·微服务·容器·面试·kubernetes
kyriewen7 小时前
大厂面试新规:不会用AI编程,直接挂
前端·面试·ai编程
土狗TuGou7 小时前
SQL内功笔记 · 第8篇:事务的四大特性与隔离级别
数据库·笔记·后端·sql·mysql·oracle
努力找实习的前端小白7 小时前
useImperativeHandle,useRef,forwardRef的协作关系
前端·面试
ZengLiangYi7 小时前
React Query + REST API 最佳实践
javascript·后端·react.js