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

Jorrick Sleijster

问题是什么?

多年前,我们开始使用自己的编排框架。考虑到当时所需的所有自定义功能,这样做是合理的。然而,很快我们就意识到,创建一个编排工具是不容小觑的。随着用户和团队数量的快速增长,花在修复问题上的时间越来越多,严重限制了开发速度。此外,由于它不是开源的,我们必须持续投入精力来跟上行业标准和工具的发展。我们需要一个工具用于我们的大数据平台,以便调度和执行许多 ETL 作业,同时,也要让用户能够重做或撤销他们的任务。

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

Apache Airflow 使我们能够在现有 Operator 和 Sensor 的基础上进行扩展,从而让编写 ETL DAG 变得尽可能简单。经过几分钟的培训后,数据科学家就能够编写自己的 DAG,包含 Apache Spark 作业及其相应的依赖项。Web UI 允许我们的数据科学家密切监控作业的状态和日志,以便在出现计划外情况时能够快速干预。我们创建了自己的访问组,这样团队就可以拥有自己 DAG 的完整权限,而对其他团队的 DAG 则只有读取权限。

Apache Airflow 的一个强大功能是回填 (backfill) 能力。这在引入新任务或需要重新运行旧作业时非常有用。通过为 Apache Airflow 创建自己的插件,我们构建了一个简单的工具来简化回填流程。除了清除运行记录,它还会清除由 Spark 作业生成的底层数据。从 Apache Airflow 1.10 迁移而来,该插件只需要少量修改即可支持 Apache Airflow 2.0。

结果如何?

起初,我们有一个完整的团队只负责我们的编排工具。借助 Apache Airflow,我们成功地将维护 DAG 的职责交还给了数据科学家团队。这使我们得以比以往更快地发展到拥有约200个 DAG 和超过5000个任务的20个团队规模。与此同时,我们的团队得以进一步扩展 Apache Airflow,同时专注于引入其他令人兴奋的新技术。有了 Airflow,我们现在把时间花在取得进展上,而不是困在修复各种问题上。