Apache Airflow 帮助我们将用户规模从 10 个扩展到 20 多个团队的 100 多个用户,并涵盖了各种用例。通过编写我们自己的插件和创建自定义用户角色,我们减轻了基础设施团队的负担,并将权力还给了 Airflow 用户。

Jorrick Sleijster

问题是什么?

多年前,我们从自己的编排框架开始。由于当时所有需要的自定义功能,这很有意义。然而,我们很快意识到创建一个编排工具是不容低估的。随着用户和团队数量的快速增长,解决问题的时间增加,严重限制了开发速度。此外,由于它不是开源的,我们必须不断努力使自己与行业标准和工具保持同步。我们需要一个工具来为我们的“大数据平台”调度和执行许多 ETL 作业,同时让用户能够重做或撤销他们的任务。

Apache Airflow 如何帮助解决这个问题?

Apache Airflow 使我们能够在已有的操作符和传感器基础上进行扩展,从而尽可能简化 ETL DAG 的编写。经过几分钟的培训,数据科学家就能够编写他们自己的 DAG,其中包含一个 Apache Spark 作业及其相应的依赖项。Web UI 允许我们的数据科学家密切监控作业的状态和日志,以便在出现问题时可以快速进行干预。我们创建了自己的访问组,以便团队对其自己的 DAG 拥有完全权限,而对其他团队的 DAG 仅具有读取权限。

Apache Airflow 的一个强大功能是回填能力。当引入新任务或需要重新运行旧作业时,这很有帮助。通过为 Apache Airflow 创建我们自己的插件,我们构建了一个简单的工具来简化回填。除了清除运行外,它还会清除 Spark 作业生成的底层数据。从 Apache Airflow 1.10 开始,此插件仅需要进行少量更改即可支持 Apache Airflow 2.0。

结果是什么?

我们最初有一个完整的团队专门从事我们的编排工具。在 Apache Airflow 的帮助下,我们成功地将维护 DAG 的责任交还给了数据科学家团队。这使得我们能够以比以往更快的速度增长到 20 个团队,这些团队总共拥有大约 200 个 DAG 和 5000 多个任务。同时,我们的团队能够进一步扩展 Apache Airflow,同时专注于引入其他新的令人兴奋的技术。有了 Airflow,我们现在可以将时间花在取得进展上,而不是陷入解决各种问题中。