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进行处理,非常感谢!