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

Tadeh Alexani

问题是什么?

在 adjoe 采用 Airflow 之前,我们主要通过两种方式进行作业调度:设置 Kubernetes 定时任务(cronjob)或构建 AWS Lambda 函数。虽然这两种方法各有优势,但在处理更复杂的工作负载时也存在局限性。随着我们的数据科学团队需求的演变,显而易见我们需要一个更强大且灵活的编排工具。

Apache Airflow 如何帮助解决此问题?

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

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

结果如何?

通过实施 Airflow,我们的数据科学家现在可以更高效地管理和调度作业。作业状态的监控变得更简单,得益于直观的界面以及对日志的便捷访问。基础设施管理的需求大幅降低,使数据科学家能够独立测试和部署他们的 DAG,从而加速了两支团队的开发。目前,我们的数据科学团队管理着超过 20 条 DAG 和超过 50 个任务,计划在下个季度末将 DAG 数量翻倍。