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,进入系统,如下所示:
六、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 执行过程都一样。
2022年Docker安装Apache Airflow2.2分布式任务调度框架相关推荐
- Docker安装Apache与运行简单的web服务——httpd helloworld
Docker运行简单的web服务--httpd helloworld目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker运行简单的web ...
- 【niubi-job——一个开源的分布式任务调度框架】-----安装教程
niubi-job是什么 niubi-job是LZ耗时三个星期,费尽心血打造的一个具备高可靠性以及水平扩展能力的分布式任务调度框架,采用quartz作为底层的任务调度管理器,zookeeper做集群的 ...
- 分布式任务调度框架XXL-JOB --配置部署
配置部署"调度中心" 调度中心项目:xxl-job-admin 作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台. 步骤一:调度中心配置: 调度中心配置 ...
- 自己动手实现分布式任务调度框架
前段时间,公司要改造现有的单节点调度为分布式任务调度,然后就研究了目前市面上主流的开源分布式任务调度框架,用起来就一个感觉:麻烦!特别是之前在一个类里写了好多个调度任务,改造起来更加麻烦.我这人又比较 ...
- 分布式任务调度框架和微服务的区别
一.前言 分布式大行其下的时代,让大家彻底的抛弃了传统陈旧的技术框架.几乎每一个技术人都知道和掌握了微服务架构,微服务自然有它的美,但是所以技术框架都必须服务于业务,结合自身业务选取甚至自研适合自身的 ...
- XXL-Job分布式任务调度框架-- 介绍和调度中心的搭建启动1
一 xxl-job介绍 1.1 xxl-job介绍 xxl-job是轻量级的分布式任务调度框架,目标是开发迅速.简单.清理.易扩展; 老版本是依赖quartz的定时任务触发,在v2.1.0版本开始 移 ...
- 分布式任务调度框架Power-Job
分布式任务调度框架的由来及对比 在大型业务业务系统中,不可避免会出现一些需要定时执行需求的场景,例如定时同步数据,定时清洗数据,定时生成报表,大量机器一同执行某个任务,甚至有些需要分布式处理的任务例如 ...
- 分布式任务调度框架(Temporal)介绍
分布式任务调度框架基本能力: 任务管理能力(增删改查.执行.定时执行.延时执行.健康监控) 集群管理能力(扩展简单.效率高) 编程能力(运行代码) Web界面管理 目前市面上有很多可用于处理分布式任务 ...
- LTS 轻量级分布式任务调度框架(Light Task Schedule) - 推酷
LTS 轻量级分布式任务调度框架(Light Task Schedule) - 推酷
最新文章
- Nature:拟南芥微生物组功能研究1培养组学—高通量细菌分离培养鉴定
- Linux搭建BT下载服务器,linux下搭建bt服务器–xbt篇
- 智源青年科学家候选人 | 张祥雨:挑战自动化深度学习系统
- 【大牛招生】李飞飞的实验室招人了!不限专业,有跨学科研究经验优先
- LeetCode 两数之和
- 树莓派3 kali linux很卡,树莓派3装kali Linux 成功写入 但是点不亮 为什么?
- 如何在SAP云平台上使用MongoDB服务 1
- linux ps mysql_linux系统中ps指令使用详解
- leveldb中为什么L 0层中每个sst文件中key的范围都是有重叠的?
- vs升级c++项目遇到的一些问题
- 邮件退订_如何方便地退订邮件列表
- 2.C#2.0之泛型(完成)
- 百度视频播放器android,百度视频播放器
- 凯立德导航 版本号意义解读
- 安卓手机超频CPU(无修饰CPU控制)
- 坚果pro2刷回官方_锤子坚果Pro2手机降回6.0.3版本教程
- uniapp 压缩图片(微信小程序)
- Linux安装Redis
- vue 视频 时间进度条组件
- 忽视警告_不要忽视下雨的风险2