我很高兴地宣布 Apache Airflow 2.7.0 已发布!此版本增加了一些重要功能,我们很高兴社区能开始使用它们。

Apache Airflow 2.7.0 包含超过 500 次提交,其中包括 40 项新功能、49 项改进、53 个错误修复和 15 项文档更新。

详情:

📦 PyPI: https://pypi.ac.cn/project/apache-airflow/2.7.0/
📚 文档: https://airflow.org.cn/docs/apache-airflow/2.7.0/
🛠 发布说明: https://airflow.org.cn/docs/apache-airflow/2.7.0/release_notes.html
🐳 Docker 镜像: “docker pull apache/airflow:2.7.0”
🚏 约束文件: https://github.com/apache/airflow/tree/constraints-2.7.0

Airflow 2.7.0 是一个专注于安全的版本。Airflow 安全团队与安全研究人员合作,发现了一些需要加强安全性的领域。这尤其带来了对 Airflow 安全模型 描述的改进、对我们的 安全策略 更详细的解释,以及默认禁用某些潜在危险功能——例如连接测试 (#32052)。

Airflow 2.7.0 也是第一个停止支持已终止生命周期 Python 3.7 的版本。这使得 Airflow 用户和维护者能够利用 Python 3.8 中的特性和改进,并可以使用更新版本的依赖项。

Setup 和 Teardown (AIP-52)

Airflow 现在对 setup 和 teardown 任务概念提供一流支持。这些任务具有特殊行为,表现在:

  • Teardown 任务无论上游任务处于何种状态都会运行
  • Teardown 任务失败默认不会导致 DAG 运行失败
  • 清除依赖任务时自动清除 setup/teardown 任务

您可以在 介绍 Setup 和 Teardown 任务的博客文章setup 和 teardown 文档 中阅读更多关于 setup 和 teardown 的信息。

集群活动 UI

Airflow 中新增了一个顶级页面:集群活动页面。此页面提供了集群的概览,包括组件健康状况、DAG 和任务状态计数等信息!

New cluster activity page

图形视图和甘特图视图移至网格视图 UI

图形视图和甘特图视图已被重写并移至现在更为熟悉的网格视图。这样一来,在复杂的 DAG 中查看任务详情、日志、图形视图和甘特图视图时,切换更加方便,不易迷失位置。

Graph in grid view

通过一个配置设置启用所有可推迟任务的推迟模式

Airflow 2.7.0 新增了一个配置选项 default_deferrable,管理员无需修改任何 DAG 即可为所有可推迟任务启用推迟模式。只需在配置中设置它,即可享受异步任务!

OpenLineage 内置集成

OpenLineage 提供了一套规范,用于标准化数据生态系统中运营血缘(operational lineage)的收集和分发,无论是开源还是商业项目都可以实现该规范。

在 2.7.0 版本中,OpenLineage 从一个在 OpenLineage 项目中维护的插件实现转变为 Airflow 的内置功能。作为一个插件,OpenLineage 依赖于 Airflow 和操作器的内部结构,使其不够稳定。Airflow 内置的 OpenLineage 支持使得通过 OpenLineage 生态系统发布运营血缘更加容易和可靠。其实现方式是将 openlineage-airflow 包从 OpenLineage 项目迁移到 Airflow 基础 Docker 镜像中的一个名为 apache-airflow-providers-openlineage 的 Provider 中,通过配置即可轻松启用。此外,该包中 Extractors 里包含的血缘提取逻辑已随单元测试一起迁移到各个对应的 Provider 包中,在大多数情况下不再需要 Extractors。为此,可以使用一个新的可选 Operator API(get_openlineage_facets_on_{start(), complete(ti), failure(ti)},文档 在此)。将提取逻辑放在每个 Provider 中,确保了每个 Operator 血缘契约的稳定性,并使得为自定义 Operator 添加血缘覆盖更容易。

部分执行器已移至 Provider 中

Airflow 核心中自带的部分执行器已在 Airflow 2.7.0 版本中移至其对应的 Provider 中。这样做的一大好处是可以实现更快的错误修复版本发布,因为 Provider 可以独立于核心进行发布。以下 Provider 已被迁移,并需要满足特定的最低版本要求:

如果您使用官方 Docker 镜像,这些 Provider 都已预装。

更多新功能

以下仅列出部分值得关注的新功能,完整列表太多无法一一列出:

  • 现在,Pool 可以将处于推迟状态的任务视为正在运行 (#32709)
  • chain_linear,类似于 chain 但允许顺序任务 (#31927)
  • 网格视图现在支持键盘快捷键! (#30950)
  • 将任务组标记为成功或失败 (#30478)
  • Fail_stop,允许在 DAG 中发生第一次失败时,使所有剩余和正在运行的任务都失败 (#29406)

贡献者

感谢所有为此版本做出贡献的人,包括 Akash Sharma, Amogh Desai, Brent Bovenzi, D. Ferruzzi, Daniel Standish, Ephraim Anierobi, Hussein Awala, Jarek Potiuk, Jed Cunningham, Karthikeyan Singaravelan, Maciej Obuchowski, Niko Oliveira, Pankaj Koti, Pankaj Singh, Pierre Jeambrun, Tzu-ping Chung, Utkarsh Sharma, Vincent Beck,以及其他 74 多位贡献者!

我特别要感谢我们的发布经理 Ephraim,他为此版本的发布付出了努力。

希望您喜欢使用 Apache Airflow 2.7.0!

分享

延伸阅读

Apache Airflow 2.9.0:数据集和 UI 改进

Jed Cunningham

Apache Airflow 2.9.0 发布!本次带来了许多令人兴奋的新数据集和 UI 功能/改进。

Apache Airflow 2.6.0 有哪些新变化

Jed Cunningham

Apache Airflow 2.6.0 已发布!