部署 Airflow 使我们能够高效地管理多个 DAG 的工作负载,从生成报告和系统分析到训练机器学习模型和准备数据集。
问题是什么?
在 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 的数量增加一倍。