近年来,工作流管理工具越来越受到大家的关注,不管它是专注某个特定领域还是领域无关,这样的趋势归功于越来越多的数据处理流水线以及机器学习(ML)模型开发流程的自动化。Airflow 是早期开源的工作流编排引擎之一,它用代码将流水线定义为有向无环图(DAGs),这是对传统 XML/YAML 定义方式的一大改进。尽管 Airflow 仍然是被广泛使用的编排工具之一,但是我们还是鼓励你根据实际情况评估其他工具。例如, Prefect , 它的关键特性是支持动态的数据处理任务,任务本身通过 Python 范型函数实现。如果你需要和 Kubernetes 深度集成,那么可以考虑 Argo 。如果你需要编排机器学习(ML)工作流,那么 Kubeflow 和 MLflow 可能更合适。考虑到越来越多的新工具不断涌现,再加上 Airflow 本身的功能短板(比如缺少对动态工作流的支持,中心化的流水线调度机制),我们不再推荐 Airflow 作为首选的编排工具。
我们相信,随着流式处理越来越多地用于数据分析和数据流水线,以及通过去中心化的 Data Mesh来管理数据,人们使用编排工具来定义和管理复杂数据流水线的需求会越来越少。
Airflow仍然是我们广泛采用的最喜欢的开源工作流管理工具,用于构建作为有线无环图(DAGs)的数据处理流水线。这是一个蓬勃发展的领域,开源工具有 Luigi 和 Argo,厂商工具则有 Azure Data Factory 或者 AWS Data Pipeline。然而 Airflow 特别之处在于它对工作流的程序化定义,而非低代码配置文件,以及对自动化测试的支持,开源并支持多平台,对数据生态丰富的集成点还有广泛的社区支持。不过在像数据网格这样的去中心化数据架构中,Airflow 的劣势在于它是一个中心化的工作流编排。
Airflow is a tool to programmatically create, schedule and monitor data pipelines. By treating Directed Acyclic Graphs (DAGs) as code, it encourages maintainable, versionable and testable data pipelines. We've leveraged this configuration in our projects to create dynamic pipelines that resulted in lean and explicit data workflows. Airflow makes it easy to define your operators and executors and to extend the library so that it fits the level of abstraction that suits your environment.