Apache Airflow的完整介绍

关键概念 , 安装和DAG实际示例

Apache Airflow的完整介绍

文章插图
> Photo by ?ahin Ye?ilyaprak on Unsplash
 
Airflow是用于自动化和安排任务和工作流程的工具 。如果您想以数据科学家 , 数据分析师或数据工程师的身份高效工作 , 那么拥有一个可以自动执行要定期重复的流程的工具至关重要 。从提取 , 转换和加载常规分析报告的数据到自动重新训练机器学习模型 , 这可以是任何事情 。
Airflow使您可以轻松地自动化主要由Python和SQL编写的简单到复杂的流程 , 并具有丰富的Web UI来可视化 , 监视和修复可能出现的任何问题 。
下面的文章是对该工具的完整介绍 。我已经包含了从虚拟环境中安装到以简单易懂的步骤运行第一个dag的所有内容 。
我将本教程分为6个部分 , 以使其易于理解 , 以便您可以跳过已经熟悉的部分 。包括以下步骤:
· 基本气流概念 。
· 如何在虚拟环境中设置Airflow安装 。
· 运行Airflow Web UI和调度程序 。
· 常见的CLI命令列表 。
· Web UI导览 。
· 创建一个真实的示例DAG 。
1.基本概念在讨论Airflow的安装和使用之前 , 我将简要介绍该工具至关重要的几个概念 。
DAG该工具的核心是DAG(有向无环图)的概念 。DAG是您要在工作流中运行的一系列任务 。这可能包括通过SQL查询提取数据 , 使用Python执行一些计算 , 然后将转换后的数据加载到新表中 。在Airflow中 , 每个步骤都将作为DAG中的单独任务编写 。
通过Airflow , 您还可以指定任务之间的关系 , 任何依赖关系(例如 , 在运行任务之前已将数据加载到表中)以及应按顺序运行任务 。
DAG用Python编写 , 并另存为.py文件 。该工具广泛使用DAG_ID来协调DAG的运行 。
DAG运行我们具体说明了DAG应何时通过execute_date自动运行 。DAG按照指定的时间表运行(由CRON表达式定义) , 该时间表可以是每天 , 每周 , 每分钟或几乎任何其他时间间隔
OperatorOperator将要在每个任务中执行的操作封装在DAG中 。Airflow有大量的内置操作员 , 它们可以执行特定任务 , 其中一些特定于平台 。此外 , 可以创建自己的自定义运算符 。
2.安装我将为您提供在隔离的Pipenv环境中进行Airflow设置的个人设置 。如果您使用其他虚拟环境工具 , 则步骤可能会有所不同 。此设置的大部分灵感来自于出色的Stackoverflow线程 。
对您的Airflow项目使用版本控制是一个好主意 , 因此第一步是在Github上创建一个存储库 。我叫我airflow_sandbox 。使用git clone" git web url"创建到本地环境的存储库克隆后 。
从终端导航到目录 , 例如 cd / path / to / my_airflow_directory 。
进入正确的目录后 , 我们将安装pipenv环境以及特定版本的Python , Airflow本身和Flask , 这是运行Airflow所必需的依赖项 。为了使一切正常工作 , 最好为所有安装指定特定版本 。
pipenv install --python=3.7 Flask==1.0.3 Apache-airflow==1.10.3
气流需要在本地系统上运行一个称为AIRFLOW_HOME的位置 。如果未指定 , 则默认为您的路线目录 。我更喜欢通过在.env文件中指定它来在我正在工作的项目目录的路径中设置Airflow 。为此 , 只需运行以下命令 。
echo "AIRFLOW_HOME=${PWD}/airflow" >> .env
接下来 , 我们初始化pipenv环境 。
pipenv shell
气流需要运行数据库后端 。默认设置为此使用SQLite数据库 , 这对于学习和实验来说是很好的选择 。如果您想建立自己的数据库后端 , 那么气流文档会提供很好的指导 。初始化数据库类型 。
airflow initdb
最后 , 我们创建一个目录来存储我们的dag 。
mkdir -p ${AIRFLOW_HOME}/dags/
就是说初始基本设置完成了 。您现在应该具有一个如下所示的项目结构 。
Apache Airflow的完整介绍

文章插图
 
3.运行AirflowAirflow具有出色的Web UI , 您可以在其中查看和监视您的问题 。要启动Web服务器以查看UI , 只需运行以下CLI命令 。默认情况下 , Airflow将使用端口8080 , 因为我已经使用该端口运行我指定8081的其他端口 。


推荐阅读