部署 Airflow 使我们能够高效地管理包含多个 DAG 的工作负载,从生成报告和系统分析,到训练机器学习模型和准备数据集。

Tadeh Alexani

问题是什么?

在 adjoe 采用 Airflow 之前,我们主要通过两种方式处理任务调度:设置 Kubernetes cronjobs 或构建 AWS Lambda 函数。虽然这两种方法都有其优点,但也存在局限性,尤其是在管理更复杂的工作负载时。随着我们的数据科学团队需求不断发展,很明显我们需要一个更健壮和灵活的编排工具。

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

随着为数据科学团队创建新的 AWS 环境,我们在 Kubernetes 上引入了 Airflow 作为主要的编排解决方案,满足了稳定性和可扩展性的要求。

在我们的预生产和生产环境中部署 Airflow 后,我们能够创建多个 DAG 来高效地管理和调度各种工作负载。这些工作负载包括生成和发送每日报告、执行系统分析、使用 Spark Operator 或 Kubeflow 的 Training Operator(针对 GPU 模型)训练复杂的机器学习模型,以及利用 Airflow 的 ETL 能力准备数据集。

结果如何?

通过实施 Airflow,我们的数据科学家现在可以更高效地管理和调度他们的任务。由于直观的界面还提供了方便的日志访问,监控任务状态变得更加简单。对基础设施管理的需求显著减少,使数据科学家能够独立测试和部署他们的 DAG,这反过来又加速了两个团队的开发。目前,我们的数据科学团队管理着超过 20 个 DAG 和 50 多个任务,并计划在下一季度末将 DAG 数量翻一番。