2022年,闲聊 Airflow 2.2

简介: airflow系列

airflow

Airflow是一个分布式任务调度框架,可以把具有上下级依赖关系的工作流组装成一个有向无环图; 有向无环图长得就如下一般:An example Airflow DAG, rendered in Graph form airflow website.

说的云里雾里的,那么Airflow究竟是什么呢?简单说,airflow就是一个平台,你可以在这个平台上创建、管理、执行自定义的工作流,这里的工作流就是前面所说的有向无环图,如上图所示一样,有向无环图是由一系列单独运行的task组合而成,任务之间的前后排列取决于任务之间处理的关系或者数据的流转的方向,而这里的工作流有一个很专业的名字叫DAG(Directed Acyclic Graph),我相信看到这里,你心中应该有些许概念了。

既然知道Airflow是什么了,那么它究竟能解决平常工作中的哪些问题呢?下面就需要聊聊具体的使用场景了:

Airflow解决的场景

  • 帮助运维追溯服务器中运行的定时任务的执行的结果
  • 大数据处理场景下,方便管理触发导入导出线上数据的各个任务以及这些任务之间的依赖关系
  • 实现大规模主机集群中作业统一的调度和管理平台

现在你觉得Airflow是不是在工作中还真有点用,有没有一些共同的痛点呢?既然了解了airflow的作用,那就走进的airflow,熟悉一下airflow的组件架构。

Airflow架构

Airflow架构图

Worker

见名知意,它就是一线干活的,用来处理DAG中定义的具体任务

Scheduler

是airflow中一个管事的组件,用于周期性轮询任务的调度计划,然后将任务分发给执行的程序运行工作流

Webserver

webserver是Airflow中通过flask框架整合管理界面,可以让你通过http请求与airflow通信来管理airflow,可以通过界面的方式查看正在运行的任务,以及任务的运行状态、运行日志等等,

通过管理界面创建、触发、中止任务让airflow使用变得更加简单。如下图所示,当然这也是airflow的一个绝大优势。

Airflow Dashboard

Metadata Database

airflow的元数据数据库,供调度器、执行器和网络服务器用来存储状态。

从整体上看Airflow的组件架构不是很复杂,当然这里的我们也进行了一些其他任务编排工具,对比一下

Airflow类似的编排工具比较

编排工具的受欢迎度

总体而言,Apache Airflow既是最受欢迎的工具,也是功能最广泛的工具。

Airflow vs Luigi

luigi与airflow都是使用python和dag定义任务和依赖项,但是luigi在架构和使用上相对更加的单一和简单,同时airflow因为拥有丰富的UI和计划任务方便显示更胜一筹,而luigi需要更多的自定义代码实现的计划任务的功能

Airflow vs Argo

airflow与argo都可以将任务定义为DAG,但是在Airflow中,您可以使用Python进行此操作,而在Argo中,要使用YAML

Airflow vs Kubeflow

Airflow是一个通用的任务编排平台,而Kubeflow特别专注于机器学习任务,两种工具都使用Python定义任务,但是Kubeflow在Kubernetes上运行任务。Kubeflow分为Kubeflow和Kubeflow管道:后一个组件允许您指定DAG,但与常规任务相比,它更侧重于部署和监控模型。

Airflow vs MLFlow

Airflow是一个通用的任务编排平台,而MLFlow是专门为优化机器学习项目而构建的。这意味着MLFlow具有运行和跟踪实验,以及训练和部署机器学习模型的功能,而Airflow适用于更广泛的用例,您可以使用它来运行任何类型的任务。

Airflow是一组管理和计划任务的模块的集合,MLFlow是一个纯粹的Python库,您可以将其导入到现有的机器学习代码中,还可以使用命令行工具来将scikit-learn编写的机器学习模型部署到Amazon SageMaker或AzureML。

如果您想以一种简单的,开箱即用的方式来训练和部署机器学习模型,请使用MLFlow。如果您有更复杂的要求,并希望更好地控制机器学习项目的整个生命周期,请使用Airflow。

从了解Airflow的概念,到使用场景,已然对airflow这种编排工具有一定的了解,通过拆分了解airflow组件架构,又进一步对airflow的工作流程有一个初步的认识,通过与其他编排工具对比,了解的airflow的优势以及结合自身的使用场景,更加有助于判断,对编排工具选型的重要性。下一步,就将在实践中在深一步走进airflow。

相关文章
|
消息中间件 存储 监控
五分钟快速了解Airflow工作流
简介 Airflow是一个以编程方式创作、调度和监控工作流的平台。 使用 Airflow 将工作流创作为有向无环图(DAG)任务。 Airflow 调度程序按照你指定的依赖项在一组workers上执行您的任务。同时,Airflow拥有丰富的命令行实用程序使得在DAG上进行复杂的诊断变得轻而易举。并且提供了丰富的用户界面使可视化生产中运行的工作流、监控进度和需要排查问题时变得非常容易。 当工作流被定义为代码时,它们变得更易于维护、可版本化、可测试和协作。
|
2月前
|
数据采集 人工智能
Dify 工作流分享-小红书文案生成器
本文介绍了生成小红书文案的具体流程和节点设置,包括输入主题、风格、字数,以及处理URL链接和直接主题的两种方式。最后,三金分享了实际测试效果和相关资源。
148 0
Dify 工作流分享-小红书文案生成器
|
7月前
|
监控 数据处理 调度
使用Apache Airflow进行工作流编排:技术详解与实践
【6月更文挑战第5天】Apache Airflow是开源的工作流编排平台,用Python定义复杂数据处理管道,提供直观DAGs、强大调度、丰富插件、易扩展性和实时监控。本文深入介绍Airflow基本概念、特性,阐述安装配置、工作流定义、调度监控的步骤,并通过实践案例展示如何构建数据获取、处理到存储的工作流。Airflow简化了复杂数据任务管理,适应不断发展的数据技术需求。
1384 3
|
6月前
|
数据可视化 IDE 开发工具
Coze工作流介绍(一)
Coze工作流介绍(一)
282 0
|
6月前
|
人工智能 JavaScript IDE
使用Coze工作流(二)
使用Coze工作流(二)
323 0
|
8月前
|
Prometheus 监控 数据可视化
面试分享:Airflow工作流调度系统架构与使用指南
【4月更文挑战第10天】Apache Airflow是关键的工作流调度系统,本文结合面试经验,深入探讨其核心架构和使用技巧。重点包括:1) Airflow的Scheduler、Web Server、Worker和Metadata Database组件;2) DAG、Task和Operator的概念;3) DAG编写、调度及错误处理策略;4) 监控与扩展性,如自定义Operator和最佳实践。通过学习,助你在面试中应对Airflow相关问题,并提升实际工作中的数据工程能力。
569 5
|
8月前
|
XML 数据格式
[AIGC] 工作流中的会签:概念与实现
[AIGC] 工作流中的会签:概念与实现
133 1
|
8月前
|
存储 监控 Linux
Airflow【部署 01】Airflow官网Quick Start实操(一篇学会部署Airflow)
【2月更文挑战第7天】Airflow【部署 01】Airflow官网Quick Start实操(一篇学会部署Airflow)
700 1
|
8月前
|
人工智能
AutoGen多代理对话项目示例和工作流程分析
在这篇文章中,我将介绍AutoGen的多个代理的运行。这些代理将能够相互对话,协作评估股票价格,并使用AmCharts生成图表。
475 1
|
机器学习/深度学习 存储 Kubernetes
如何将 Apache Airflow 用于机器学习工作流
Apache Airflow 是一个流行的平台,用于在 Python 中创建、调度和监控工作流。 它在 Github 上有超过 15,000 颗星,被 Twitter、Airbnb 和 Spotify 等公司的数据工程师使用。 如果您使用的是 Apache Airflow,那么您的架构可能已经根据任务数量及其要求进行了演变。 在 Skillup.co 工作时,我们首先有几百个 DAG 来执行我们所有的数据工程任务,然后我们开始做机器学习。