「随笔」开源任务编排框架Airflow基础

痛点和目标

传统手动编排数据处理流程的痛点:

  • 耗时耗力,效率低下

  • 易出错,难以追踪

  • 难以应对复杂性和拓展性

现代化编排工具的目标/优势:

  • 自动化执行,减少人为干预

  • 提高效率,增强可靠性

  • 支持复杂工作流,易于拓展

核心概念

架构概述 — Airflow 文档 - Airflow 工作流管理平台

  • DAG(Directed Acyclic Graph)

    定义数据工作流的结构

  • 任务(Tasks)

    工作流中的单个操作

  • 操作符(Operators)

    定义任务的类型和行为

  • 依赖关系

  • TaskFlow

  • 执行器

    基本的工作单元

  • 认证管理器

DAG

一种模型。可以指定任务之间的依赖关系,定义任务的执行顺序。描述任务要做什么:无论是获取数据、运行分析、触发其他系统等等。

DAG设计

需求收集
  1. 相关人员沟通:业务分析师、数据科学家、系统负责人

  2. 明确需求

    • 数据来源、转换、消费

    • 数据量、更新频率、延迟要求、数据质量

    • 技术限制:基础设施、工具、现有系统

  3. 文档记录与定期回顾

操作符

  • BashOperator

  • PythonOperator

  • SqlOperator

  • HttpOperator

  • DockerOperator

执行器

调度器

核心职责:确定任务何时应该被调度执行

DAG解析:持续解析DAG目录中的DAG文件,寻找新的任务进行调度

心跳机制:调度器在一个循环中运行心跳,不断检查任务、调度任务、短暂休眠后再次检查

动态任务调度:根据任务依赖和状态动态

XComs

跨任务通信机制。

Airflow安全模型

Airflow 安全模型 — Airflow 文档 - Airflow 工作流管理平台

Airflow 安全模型涉及不同类型的用户,他们拥有不同的访问权限和功能。

  • 部署管理员:负责airflow的安装、安全和配置

    他们拥有最高级别的访问权限和控制权。他们负责安装和配置 Airflow,并就技术和权限做出决定。他们可以潜在地删除整个安装并访问所有凭据。部署管理员还可以决定在 Airflow 之外保留审计、备份和信息副本,这些不属于 Airflow 安全模型的范围。

  • 已认证的UI用户:可以访问Airflow UI和API并与其交互的用户

  • DAG作者:负责创建DAG并将其提交到Airflow

    他们可以创建、修改和删除 DAG 文件。DAG 文件中的代码在工作节点和 DAG 处理器中执行。因此,DAG 作者可以创建和更改在工作节点和 DAG 处理器上执行的代码,并可能访问 DAG 代码用于访问外部系统的凭据。DAG 作者对元数据数据库拥有完全访问权限。

  • 未认证的UI用户

    Airflow 默认不支持未经认证的用户

已认证UI用户的功能

不同角色具有不同的权限,角色权限的范围可以小至单个 DAG。

  • 管理员用户

  • 操作员用户

  • 连接配置用户

  • 审计日志用户

  • 普通用户

  • 查看者用户

DAG作者的功能

部署

部署方式

  • 单机简单部署

    这是最简单的 Airflow 部署,通常在单台机器上操作和管理。这种部署通常使用 LocalExecutor,其中调度器工作进程在同一个 Python 进程中,并且调度器直接从本地文件系统读取DAG 文件Web 服务器调度器在同一台机器上运行。没有触发器组件,这意味着无法进行任务延迟。

  • 分布式Airflow架构

    Airflow 的组件分布在多台机器上,并引入了各种用户角色——部署管理器DAG 作者运维用户。在分布式部署的情况下,考虑组件的安全性方面非常重要。Web 服务器无法直接访问DAG 文件。UI 中“代码”选项卡中的代码是从元数据数据库中读取的。Web 服务器无法执行由DAG 作者提交的任何代码。它只能执行由部署管理器安装为已安装软件包插件的代码。运维用户只能访问 UI,并且只能触发 DAGs 和任务,但不能编写 DAGs。

  • DAG处理分离架构

    允许将调度器与访问DAG 文件分开

  • ……

单机部署

在Pyhon环境中安装airflow

选择1:从pip安装
pip install "apache-airflow[celery]==3.0.0" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.0.0/constraints-3.9.txt"

注:使用科大源和清华源可能在安装google-re2时失败(由于速率限制403),使用阿里源可避免该问题。

选择2: 在Docker中运行Airflow

在 Docker 中运行 Airflow — Airflow 文档 - Airflow 工作流管理平台

初始化配置文件
docker compose run airflow-cli airflow config list

初始化数据库
docker compose -f docker/docker-compose.yaml up airflow-init

后台启动
docker compose up -d

注:如果不先运行初始化命令,而直接试图通过docker compose启动所有服务,apiserver可能由于无法获取配置文件中的关键变量而无法启动。

通过检查是否可正常打开UI界面确定安装是否完成。

设置数据库

参考:设置数据库后端 — Airflow 文档 - Airflow 工作流管理平台

测试数据库是否ready

分布式集群搭建

大数据调度平台Airflow(八):Airflow分布式集群搭建及测试_airflow集群部署-CSDN博客

更多问题

https://medium.com/@sumitmudliar/beginners-guide-to-apache-airflow-4827c3f4bfe4

Apache Airflow 3 正式发布,开源分布式工作流平台 - OSCHINA - 中文开源技术交流社区

基于大数据的舆情分析系统架构(架构篇)_大数据_宇珩_InfoQ精选文章

其他调度平台

https://dolphinscheduler.apache.org

CoolCats
CoolCats
理学学士

我的研究兴趣是时空数据分析、知识图谱、自然语言处理与服务端开发