python工作流_Airflow:Python 工作流管理利器-Python-火龙果软件

Airflow 编写工作线提供入门教程。

Apache Airflow 是一个用于编排复杂计算工作流和数据处理流水线的开源工具。

如果您发现自己运行的是执行时间超长的 cron 脚本任务,或者是大数据的批处理任务,Airflow

编写工作线提供入门教程。

Airflow 工作流设计称为有向非循环图(DAG)。这意味着,在编写工作流时,您应该考虑如何将你的任务划分为多个可独立执行的任务,然后,将这些任务合并为一个逻辑整体,将其组合成一个图,从而实现我们的工作流结果,例如:

安装 Airflow

为了方便,我这里单独创建了一个 airflow 的用户用于实验,同时使用这个用户的 home 目录

/home/airflow 作为 airflow 的工作目录,如果你希望和我看到一样的效果,那么我希望是跟着我的步骤一起来:

哈哈,到这里我们可以说一个最简单的配置就算是完成了,来看点有用的吧,尝试一下输入 airflow

version 命令看看:

打开 airflow.cfg 文件你会发现里面有很多配置项,而且大部分都是有默认值的,这个文件就是

airflow 的配置文件,在以后的详解中我们会接触到很多需要修改的配置,目前就以默认的配置来进行试验。如果你现在就迫不及待得想自己修改着玩玩,那么

Airflow Configure 这篇文档可以帮助你了解各个配置项的含义。

初始化 Airflow 数据库

可能你会有点震惊了,为啥要初始化数据库,因为 airflow 需要维护 DAG 内部的状态,需要保存任务执行的历史信息,这些都是放在数据库里面的,也就是说我们需要先在数据库中创建表,但是,因为使用的是

Python,我们不需要自己使用原始的 SQL 来创建,airflow 为我们提供了方便的命令行,只需要简单得执行:

(venv)

$ airflow initdb

这里值得注意的是,默认的配置使用的是 SQLite,所以初始化知道会在本地出现一个 airflow.db

的数据库文件,如果你想要使用其他数据库(例如 MySQL),都是可以的,只需要修改一下配置,我们后续会讲到:

第一个 DAG

从一开始就说了, Airflow 的两个重大功能就是 DAG 和 Plugin,但是直到现在我们才开始讲解

DAG。DAG 是离散数学中的一个概念,全称我们称之为:有向非循环图(directed acyclic

graphs)。图的概念是由节点组成的,有向的意思就是说节点之间是有方向的,转成工业术语我们可以说节点之间有依赖关系;非循环的意思就是说节点直接的依赖关系只能是单向的,不能出现

A 依赖于 B,B 依赖于 C,然后 C 又反过来依赖于 A 这样的循环依赖关系。

那么在 Airflow 中,图的每个节点都是一个任务,可以是一条命令行(BashOperator),可以是一段

Python 脚本(PythonOperator)等等,然后这些节点根据依赖关系构成了一条流程,一个图,称为一个

DAG,每个 Dag 都是唯一的 DagId。

创建一个 DAG 也是很简单得,首先需要在 AIRFLOW_HOME 目录下创建一个 dags 目录,airflow

将会在这个目录下去查找 DAG,所以,这里我们先创建一个,创建完之后新建一个 tutorial.py

文件:

我们可以从 Web UI 上看到这个 DAG 的依赖情况:

我这里使用的是 LocalExecutor, Airflow 目前有三种执行器,分别是:

1.SequentialExecutor:顺序得指定 DAG

2.LocalExecutor:使用本地进程执行 DAG

3.CeleryExecutor:使用 Celery 执行 DAG

其中第一种 SequentialExecutor 可以用来在开发调试阶段使用,千万不要在生成环境中使用。第二种和第三种可以用于生产也可以用于开发测试,但是,对于任务较多的,推荐使用第三种:

CeleryExecutor。

总结

Airflow 的高级特性,在本博客中将会有大量的后续文章进行介绍,请大家自行搜索了解。

Reference

1.Airflow Tutorial

2.A Summer Intern’s Journey into

Airflow @ Agari

3.Get started developing workflows

with Apache Airflow

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览214427 人正在系统学习中 相关资源:奇异果软件助手v2.7.zip_奇异果v9刷机教程-其它代码类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月7日
下一篇 2020年11月7日

相关推荐