1airflowAirflow[1]是一个分布式任务调度框架,可以将具有上下依赖关系的工作流组装成有向无环图[2];一个有向无环图只要是这样的:图片上说是阴天,那么Airflow到底是什么?简而言之,airflow是一个平台,您可以在该平台上创建、管理和执行自定义工作流。这里的工作流程就是上面提到的有向无环图,如上图所示,由一系列单独运行的任务组成。任务的安排取决于任务之间的关系或数据之间的关系。循环的方向,这里的工作流有个很专业的名字叫DAG(DirectedAcyclicGraph)。相信看到这里,你心里应该有了一些概念吧。现在我们知道了Airflow是什么,那么它在日常工作中可以解决哪些问题呢?接下来要说说具体的使用场景:Airflow解决的场景帮助运维追踪运行在服务器中的定时任务的执行结果。在数据处理场景,方便管理触发在线数据导入导出的各种任务以及这些任务之间的依赖关系,实现大型主机集群等场景作业的统一调度和管理平台。.现在你觉得Airflow在工作中真的很有用吗?你有一些共同的痛点吗?了解了airflow的作用之后,让我们走进airflow,熟悉一下airflow的组件架构。Airflow架构Airflow架构图Worker顾名思义,它是一个一线工作,用于处理DAG中定义的特定任务Scheduler是airflow中的一个管理组件,用于周期性轮询任务的调度计划,然后assigntasks分布式执行运行工作流的程序WebserverWebserver是Airflow中通过flask框架集成的管理界面。它允许您通过http请求与airflow通信以管理airflow。可以通过界面查看正在运行的任务,以及任务的运行状态和运行状态。日志等通过管理界面创建、触发、终止任务,让airflow的使用更简单。如下图所示,当然这也是airflow的一大优势。AirflowDashboardMetadataDatabaseairflow的元数据数据库,用于调度器、worker和webserver来存储状态。整体来说Airflow的组件架构并不是很复杂。当然,我们这里也进行了一些其他的任务编排工具。将编排工具的流行度与2Airflow中类似的编排工具进行比较。总的来说,ApacheAirflow是最受欢迎的工具,也是功能最广泛的工具。AirflowvsLuigiluigiairflow都是使用python和dag来定义任务和依赖,但是luigi在架构和使用上比较单一和简单,而airflow更好,因为它丰富的UI和定时任务方便展示,而luigi需要更多的自定义代码实现定时任务的功能AirflowvsArgoairflow和argo都可以将任务定义为DAG,但是在Airflow中,你可以使用Python来实现,而在Argo中,你想要使用YAMLAirflowvsKubeflowAirflow是一个通用的任务编排平台,而Kubeflow专门专注于机器学习任务。两种工具都使用Python来定义任务,但Kubeflow在Kubernetes上运行任务。Kubeflow分为Kubeflow和KubeflowPipelines:后者组件允许您指定DAG,但比常规任务更侧重于部署和监控模型。AirflowvsMLFlowAirflow是一个通用的任务编排平台,而MLFlow是专门为优化机器学习项目而构建的。这意味着MLFlow具有运行和跟踪实验、训练和部署机器学习模型的能力,而Airflow适用于更广泛的用例,你可以用它来运行任何类型的任务。Airflow是一组用于管理和调度任务的模块,而MLFlow是一个纯Python库,您可以将其导入现有的机器学习代码中。从了解Airflow的概念到使用场景,我已经对Airflow作为编排工具有了一定的了解。通过对airflow组件架构的拆分和理解,对airflow的工作流程有了初步的了解。通过与其他编排工具的对比,了解airflow的优势,并结合自身的使用场景,有助于判断选择编排工具的重要性。在下一步中,我们将在实践中更深入地研究气流。
