0%

Airflow

Airflow,一个可编程,调度和监控的工作流平台

概述

http://airflow.apache.org/

什么是Airflow

Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。 Airflow 是通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具, 不需要知道业务数据的具体内容,设置任务的依赖关系即可实现任务调度。

当工作流被定义为代码时,它们变得更加可维护、可版本化、可测试和协作。

这个平台拥有和 Hive、Presto、MySQL、HDFS、Postgres 等数据源之间交互的能力,并且提供了钩子(hook)使其拥有很好地扩展性。 除了一个命令行界面,该工具还提供了一个基于 Web 的用户界面可以可视化管道的依赖关系、监控进度、触发任务等。

原则

  • 可扩展:Airflow 具有模块化架构,并使用消息队列来编排任意数量的 worker。Airflow已准备好无限扩展。
  • 动态的:在 Python 中定义,允许动态pipelines生成。这允许编写动态实例化管道的代码。
  • 可扩展:轻松定义您自己的运算符并扩展库以适应适合您环境的抽象级别。
  • 优雅的:Airflow pipelines精简而明确。参数化是使用强大的 Jinja 模板引擎构建到其核心中的。

特征:

  • 纯Python
  • UI界面
  • 强大的集成
  • 易于使用
  • 开源

Airflow的架构

Airflow 安装通常由以下组件组成:

  • 调度器Scheduler:它处理触发调度的工作流,并将任务提交给执行程序以运行。
  • 执行器Executor:处理正在运行的任务
  • webserver:它提供了一个方便的用户界面来检查、触发和调试 DAG 和任务的行为。
  • DAG 文件夹,由调度程序和执行程序(以及执行程序拥有的任何工人)读取
  • 元数据库,供调度器、执行器和网络服务器用来存储状态

部署

安装Docker

https://docs.docker.com/engine/install/centos/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. Clear old package
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

# 2. Install dependent package
yum install -y yum-utils

# 3. Install docker-ce
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io

镜像加速器

1
2
3
4
5
6
7
8
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://48lglssc.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

安装docker-compose

https://docs.docker.com/compose/install/

1
2
3
4
5
6
7
8
9
10
11
# 1. Download docker-compose binary file
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 2. Add execute permission
chmod +x /usr/local/bin/docker-compose

# 3. link docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 4. View version
docker-compose --version

部署airflow

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 1. Create docker-compose directory
mkdir deploy
cd deploy

# 2. Download docker-compose.yaml
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.0.1/docker-compose.yaml'

# 3. Init airflow, database migrations and create the first user account
# dags 存放自定义的dag文件
# logs 存放服务的日志文件
# plugins 存放插件文件
mkdir ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0\nAIRFLOW_IMAGE_NAME=apache/airflow:2.1.0 " > .env
# export AIRFLOW_IMAGE_NAME=apache/airflow:2.1.0 # fix https://github.com/apache/airflow/issues/15312
docker-compose up airflow-init

# 4. Start all services
docker-compose up
docker-compose stop
#docker-compose up -d #后台运行

# 5. View all containers
docker ps

用户界面

Airflow 带有一个用户界面,可让您查看 DAG 及其任务正在执行的操作、触发 DAG 的运行、查看日志以及对 DAG 进行一些有限的调试和解决问题。