Apache Airflow是世界上最流行的用于构建和管理数据管道的开源工具之一,每月下载量约为1600万次。如今用户将看到几个引人注目的新功能,帮助他们快速、准确地移动数据。Apache软件基金会(Apache Software Foundation)周一发布了2.8版本。

最初Apache Airflow是由Airbnb于2014年创建的,用于数据工程的工作流管理平台。自2019年成为Apache软件基金会的顶级项目以来,它已与Apache Spark、Ray、dbt和Apache Kafka等项目一起成为开源数据工具堆栈的核心部分。

该项目最强大的优势是它的灵活性,因为它允许Python开发人员将数据管道创建为有向无环图(DAG),这些DAG可以跨1,500个数据源和接收器完成一系列任务。然而,Airflow的灵活性有时是以增加复杂性为代价的。以前,配置新的数据管道需要开发人员对产品有一定程度的熟悉,并且确切地知道使用哪个操作符来完成特定的任务。

在2.8版本中,由于新的Airflow ObjectStore实现了DAG之上的抽象层,构建到对象存储的数据管道连接变得简单多了。开源项目背后的商业实体Astronomer的首席技术官Julian LaNeve解释说:“在2.8版本之前,如果你想要将文件写入S3而不是Azure BLOB存储,不是本地文件磁盘,那么你需要在Airflow中使用不同的提供商和特定的集成,这意味着代码看起来会有所不同。”“这不是正确的抽象层,而这个ObjectStore开始改变这一点。

“比起编写自定义代码去与AWS S3或GCS或Microsoft Azure BLOB Storage进行交互,你导入Airflow给你的这个ObjectStorage模块,你可以像对待普通文件一样对待它。所以你可以复制位置,可以列出文件和目录,可以向它写入,可以从它读取。”

LaNeve说,对于开发者应该如何构建他们的数据管道,Airflow从来没有过于固执己见,这是其历史灵活性的产物。随着2.8中的ObjectStore,该产品开始提供构建数据管道的更简单路径,但没有增加复杂性。

“它还修复了Airflow中的这种模式,我们称之为转移算子,”LeNeve说。“因此,有一个操作员或预先构建的任务,将数据从S3传输到Snowflake。有一个单独的数据从S3到Redshift。有一个单独的从GCS到Redshift的数据。所以你必须了解Airflow在哪里起作用,在哪里不支持这些东西,最终你会得到这种多对多的模式,其中传输操作符的数量,或Airflow中的预构建任务,变得非常大,因为没有抽象。”

使用ObjectStore,您不必知道要使用或配置的操作符的确切名称。你只要告诉Airflow你想把数据从A点移动到B点,产品就会知道怎么做。

Airflow2.8还带来了新的功能,将提高数据意识。具体来说,Airflow中的一个新的监听设置允许用户在某个数据集更新或更改时获得警报或运行自定义代码。

“例如,如果管理员希望在数据集发生变化或依赖关系发生变化时收到警报或通知,那么现在就可以进行设置。”“你可以编写一段自定义代码,根据喜好向你发送警报,现在只要这些数据集发生变化,Airflow就可以运行这些代码。”

数据管道中的依赖关系可能非常复杂,管理员如果试图手动跟踪它们往往不知所措。有了Airflow2.8中新的监听设置生成的自动警报,管理员可以通过在产品本身中构建数据感知来降低复杂性。

LaNeve说:“我们的一些客户将运行数百个部署,数万个管道,因此要了解所有这些依赖关系,并确保了解您所关心的这些依赖关系的变化,这可能非常复杂。而如今就容易多了。”

在Airflow 2.8的三大新特性中,最后一个是增强了产品如何生成和存储用于调试数据管道问题的日志。

Airflow本身是一个复杂的软件,它依赖于六到七个底层组件的集合,包括数据库、调度程序、工作节点等等。这就是为什么在过去一年中,使用Astronomer托管的SaaS版本的Airflow(使用户增长了200%的原因之一(尽管仍然销售企业软件,客户可以在本地安装和运行)。

LaNeve解释说:“以前,这六到七个组件中的每一个都将日志写入不同的位置。这意味着,如果你正在运行一个任务,你会看到那些任务日志是特定于某位员工,但有时任务会失败的原因在其他员工。也许调度程序或数据库出了问题。

“所以我们增加了将日志从其他组件转发到你的任务的功能,”他继续说道,“这样,如果你的任务失败了,当你调试它时,你就可以查看六七种不同类型的日志……现在你可以只去一个地方查看所有可能相关的内容。”