Apache Airflow及其组件介绍

560 阅读4分钟

什么是Apache Airflow?

Apache Airflow是一个免费和开源的应用程序,用于管理复杂的工作流程和数据处理管道。它是一个用于自动化和监控工作流程的预定作业的平台。它允许我们根据我们的需要来配置和安排我们的流程,同时简化和精简流程。

为什么我们需要Apache Airflow?

让我们假设一个用例,我们希望每天在一个特定的时间触发一个数据管道。该数据管道可能包括以下步骤。下载数据,处理数据,以及 最后 存储数据

现在,为了完成上述任务,该管道可能会使用外部API和数据库。同时,我们必须确保这些外部的API和数据库可以持续使用,以确保数据管道的成功。

但是,如果数据库不存在或者我们用来获取数据的API不存在,数据管道就会失败。如果不是一个而是数百个数据管道同时运行,这个问题会成倍增加。这正是Apache Airflow所要解决的问题。通过Airflow,我们可以管理我们的数据管道,并以一种非常可靠的方式执行我们的任务,同时监测我们的任务并自动重试。

Airflow的核心组件

Airflow是一个基于元数据数据库的简单队列系统。一个调度器使用存储在数据库中的队列任务的状态来确定其他任务如何被添加到队列中的优先次序。Apache Airflow有四个主要组件。

网络服务器

网络服务器负责提供用户接口。它还允许跟踪工作状态,并从远程文件存储中读取日志。

调度器

调度器负责处理作业的调度,它决定哪些任务要执行,何时何地执行。它还决定执行的优先级。

元存储(Metastore

Metastore是一个数据库,所有与Airflow和我们的数据有关的元数据都在这里。它为其他组件之间的相互作用提供动力。存储有关每个任务的状态信息。

执行器

执行器是一个与调度器紧密相连的进程,它决定了实际要执行任务的工作进程。

工作者

工作者是执行任务的进程。

Apache Airflow的基本概念

操作员

进程中的单个任务由操作符描述,操作符通常(但不总是)是核的,这意味着它们可以独立存在,不需要其他操作符的资源。

DAG(定向无环图)

DAG是一个小任务的集合,这些小任务连接在一起,执行一个更大的任务。它描述了如何运行一个工作流程。它是我们想要运行的所有任务的集合,以定义它们的关系和依赖性的方式组织起来。

DAG ( Directed Acyclic graph)DAG ( Directed Acyclic graph)

这就是一个标准的DAG的样子。它有4个任务A、B、C和D,定义了每个任务的执行顺序和它们的依赖关系。

任务

一个任务是一个基本的执行单位。每个任务都可以定义一个上游或下游的依赖关系。使用任务的关键点是定义任务之间的关系。

操作员

操作员是一个预定义任务的模板,我们可以在DAG里面声明。

传感器

传感器是特殊的操作符,因为它们在事件发生后就开始行动了。传感器的类型:poke(默认)、reschedule和智能传感器。

使用Apache Airflow的好处

动态性

Airflow动态管道是以代码的形式建立的,使其具有动态的能力。

可扩展性

使用Airflow的另一个好处是,它可以简单地启动操作者和执行者,从而使库能够适应服务于特定环境所需的抽象水平。

可扩展性

Apache Airflow具有高度的可扩展性,我们可以根据自己的需要并行地执行许多任务。

用户界面

在用户界面的帮助下,我们可以监控我们的数据管道并相应地重试我们的任务。

[