2022年Docker安装Apache Airflow2.2分布式任务调度框架

目录

一、Apache Airflow介绍

二、下载Airflow官方的docker-compose.yaml文件

三、开始安装

四、启动Apache Airflow

五、访问系统

六、Airflow工作原理


作者已提前在Mac系统上安装了Docker服务,同时确保已经安装了Docker Compose服务。

一、Apache Airflow介绍

Apache Airflow 是一个提供基于 DAG 有向无环图来编排工作流的、可视化的分布式 任务调度平台,与 Oozie、Azkaban 等任务流调度平台类似。Airflow 在 2014 年由 Airbnb 发起,2016 年 3 月进入 Apache 基金会,在 2019 年 1 月成为顶级项目。Airflow 采用 Python 语言编写,提供可编程方式定义 DAG 工作流,可以定义一组有依赖的任务, 按照依赖依次执行, 实现任务管理、调度、监控功能。

另外,Airflow 提供了 WebUI 可视化界面,提供了工作流节点的运行监控,可以查看 每个节点的运行状态、运行耗时、执行日志等。也可以在界面上对节点的状态进行操作,如: 标记为成功、标记为失败以及重新运行等。在 Airflow 中工作流上每个 task 都是原子可 重试的,一个工作流某个环节的 task 失败可自动或手动进行重试,不必从头开始跑。

使用docker安装Apache Airflow主要参考了官方的安装链接:

Running Airflow in Docker — Airflow Documentation

二、下载Airflow官方的docker-compose.yaml文件

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.2.5/docker-compose.yaml'

这个会包含airflow调度器,webserver,worker,postgresql,redis等服务的安装,对我们来说十分方便。

三、开始安装

1、将下载后的docker-compose.yaml文件放置到某个目录

2、在当前目录中分别创建如下3个文件夹和一个文件,命令如下所示:

mkdir -p ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)" > .env

目录含义说明:

dags:该目录存放我们的DAG调度文件配置

logs:该目录存放任务执行和调度的系统日志

plugins:该目录存放插件信息

3、在当前目录下执行docker-compose命令进行安装和初始化:

docker-compose up airflow-init

该命令执行结束后,如果看到如下类似的信息,则代表安装成功。

airflow-init_1       | Upgrades done
airflow-init_1       | Admin user airflow created
airflow-init_1       | 2.2.5
start_airflow-init_1 exited with code 0

四、启动Apache Airflow

执行如下命令进行启动:

docker-compose up

等待一段时间后,可以使用docker ps查看当前容器的状态,会出现如下相关容器:

CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS                    PORTS                              NAMES
247ebe6cf87a   apache/airflow:2.2.5   "/usr/bin/dumb-init …"   3 minutes ago    Up 3 minutes (healthy)    8080/tcp                           compose_airflow-worker_1
ed9b09fc84b1   apache/airflow:2.2.5   "/usr/bin/dumb-init …"   3 minutes ago    Up 3 minutes (healthy)    8080/tcp                           compose_airflow-scheduler_1
65ac1da2c219   apache/airflow:2.2.5   "/usr/bin/dumb-init …"   3 minutes ago    Up 3 minutes (healthy)    0.0.0.0:5555->5555/tcp, 8080/tcp   compose_flower_1
7cb1fb603a98   apache/airflow:2.2.5   "/usr/bin/dumb-init …"   3 minutes ago    Up 3 minutes (healthy)    0.0.0.0:8080->8080/tcp             compose_airflow-webserver_1
74f3bbe506eb   postgres:13            "docker-entrypoint.s…"   18 minutes ago   Up 17 minutes (healthy)   5432/tcp                           compose_postgres_1
0bd6576d23cb   redis:latest           "docker-entrypoint.s…"   10 hours ago     Up 17 minutes (healthy)   0.0.0.0:6379->6379/tcp             compose_redis_1

五、访问系统

浏览器访问当前地址:http://localhost:8080,然后输入用户名和密码airflow,进入系统,如下所示:

2022年Docker安装Apache Airflow2.2分布式任务调度框架_第1张图片

 

六、Airflow工作原理

airflow 中各个进程彼此之间是独立不互相依赖,也不互相感知,每个进程在运行时 只处理分配到自身的任务,各个进程在一起运行,提供了 Airflow 全部功能,其工作原理 如下:
1、调度器Scheduler会间隔性轮询元数据库(Metastore)已注册的DAG有向无环图作业流,决定是否执行 DAG,如果一个 DAG 根据其调度计划需要执行,Scheduler 会调度当前 DAG 并触发 DAG 内部 task,这里的触发其实并不是真正的去执行任务, 而是推送 task 消息到消息队列中,每一个 task 消息都包含此 task 的 DAG ID,Task ID 以及具体需要执行的函数,如果 task 执行的是 bash 脚本,那么 task 消息还会 包含 bash 脚本代码。

2、Worker进程将会监听消息队列,如果有消息就从消息队列中获取消息并执行DAG中 的 task,如果成功将状态更新为成功,否则更新成失败。

3、用户可以通过webserverwebui来控制DAG,比如手动触发一个DAG去执行,手动 触发 DAG 与自动触发 DAG 执行过程都一样。

你可能感兴趣的:(安装部署,Docker,分布式任务调度,Airflow)