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
| yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
yum install -y yum-utils
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
| curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
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
| mkdir deploy cd deploy
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.0.1/docker-compose.yaml'
mkdir ./dags ./logs ./plugins echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0\nAIRFLOW_IMAGE_NAME=apache/airflow:2.1.0 " > .env
docker-compose up airflow-init
docker-compose up docker-compose stop
docker ps
|
用户界面
Airflow 带有一个用户界面,可让您查看 DAG 及其任务正在执行的操作、触发 DAG 的运行、查看日志以及对 DAG 进行一些有限的调试和解决问题。