Apache Airflow (一) : Airflow架构及

news2024/12/23 23:22:52

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客

 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。

 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频


目录

1.什么是Airflow

2. Airflow架构

3. Airflow术语

4. Airflow工作原理


1.什么是Airflow

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

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

Airflow官网:http://airflow.apache.org/,Airflow支持的任务调度类型如下:

2. Airflow架构

Airflow我们可以构建Workflow工作流,工作流使用DAG有向无环图来表示,DAG指定了任务之间的关系,如下图:

Airflow架构图如下:

Airflow在运行时有很多守护进程,这些进程提供了airflow全部功能,守护进程包括如下:

1) webserver:

WebServer服务器可以接收HTTP请求,用于提供用户界面的操作窗口,主要负责中止、恢复、触发任务;监控任务;断点续跑任务;查询任务状态、详细日志等。

2) Scheduler:

调度器,负责周期性调度处理工作流,并将工作流中的任务提交给Executor执行。

3) Executor:

执行器,负责运行task任务,在默认本地模式下(单机airflow)会运行在调度器Scheduler中并负责所有任务的处理。但是在airflow集群模式下的执行器Executor有很多类型,负责将任务task实例推送给Workers节点执行。

在Airflow中执行器有很多种选择,最关键的执行器有以下几种:

  • SequentialExecutor:默认执行器,单进程顺序执行任务,通常只用于测试。
  • LocalExecutor:多进程本地执行任务。
  • CeleryExecutor:分布式执行任务,多用于生产场景,使用时需要配置消息队列。
  • DaskExecutor:动态任务调度,支持远程集群执行airflow任务。

生产环境中建议使用CeleryExecutor作为执行器,Celery是一个分布式调度框架,本身无队列功能,需要使用第三方插件,例如:RabbitMQ或者Redis。

关于不同Executor类型可以参考官网:https://airflow.apache.org/docs/apache-airflow/stable/executor/index.html

4) work:

Worker负责执行具体的DAG任务,会启动1个或者多个Celery任务队列,当ariflow的Executor设置为CeleryExecutor时才需要开启Worker进程。

5) DAG Directory:

存放定义DAG任务的Python代码目录,代表一个Airflow的处理流程。需要保证Scheduler和Executor都能访问到。

6) metadata database:

Airflow的元数据库,用于Webserver、Executor及Scheduler存储各种状态数据,通常是MySQL或PostgreSQL。

3. Airflow术语

  • DAG
  • DAG是Directed Acyclic Graph有向无环图的简称,描述其描述数据流的计算过程。
  • Operators

描述DAG中一个具体task要执行的任务,可以理解为Airflow中的一系列“算子”,底层对应python class。不同的Operator实现了不同的功能,如:BashOperator为执行一条bash命令,EmailOperator用户发送邮件,HttpOperators用户发送HTTP请求,PythonOperator用于调用任意的Python函数。

  • Task

Task是Operator的一个实例,也就是DAG中的一个节点,在某个Operator的基础上指定具体的参数或者内容就形成一个Task,DAG中包含一个或者多个Task。

  • Task Instance

task每一次运行对应一个Task Instance,Task Instance有自己的状态,例如:running,success,failed,skipped等。

  • Task Relationships:

一个DAG中可以有很多task,这些task执行可以有依赖关系,例如:task1执行后再执行task2,表明task2依赖于task1,这就是task之间的依赖关系。

4. 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. 用户可以通过webserver webui来控制DAG,比如手动触发一个DAG去执行,手动触发DAG与自动触发DAG执行过程都一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1183637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

three.js点滴yan(整理后)

场景、相机和渲染器 Three.js整个系统主要包含场景Scene、相机Camera和WebGL渲染器WebGLRenderer三大块,其中场景又包含模型和光源。WebGL渲染器的主要作用就是把相机对应场景渲染出来,显示在网页Cnavas画布上。 Three.js源码 Three.js各个构造函数对应…

YOLO目标检测——交通标志检测数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用:交通标志识别数据集在自动驾驶、交通安全监控、智能交通系统、驾驶员辅助系统和城市规划等领域都有广泛应用的潜力数据集说明:交通标志识别数据集,真实场景的高质量图片数据,数据场景丰富,含有交通标识3类…

使用Streamlit创建AutoGen用户界面

AutoGen作为一个最大化LLM(如GPT-4)能力的框架而脱颖而出。由微软研究院开发的AutoGen通过提供一种自动化、优化和编排工作流的方法,简化了复杂的、基于多代理llm的应用程序的创建。我们在以前的文章中也有过介绍,你可以与许多GPT交谈,并且GP…

GPU推理提速4倍!FlashDecoding++技术加速大模型推理

推理大模型(LLM)是AI服务提供商面临的巨大经济挑战之一,因为运营这些模型的成本非常高。FlashDecoding 是一种新的技术,旨在解决这一问题,它通过提高LLM推理速度和降低成本,为使用大模型赚钱提供了新的可能…

从F5 BIG-IP RCE漏洞(CVE-2023-46747)来看请求走私的利用价值

0x01 前言 F5 BIG-IP广域流量管理器是一种网络流量管理设备,用于提升链路性能与可用性。F5在金融行业具有特别广泛的使用量,做过各大银行攻防演练的小伙伴对这个系统应该不会陌生。 最近爆出的CVE-2023-46747漏洞能达到远程RCE的效果,属于严重…

浅谈消防设备电源监控系统在大型建筑内的应用

【摘要】:当建筑内火灾发生时,各类消防设备能否正常运行、能否发挥作用是初期火灾扑救是否成功的重要条件之一,而稳定可靠的消防设备电源则是消防设备正常工作的保障。因此针对消防设备电源的监测系统至关重要。 【关键词】:消防…

Python 既是解释型语言,也是编译型语言

哈喽大家好,我是咸鱼 不知道有没有小伙伴跟我一样,刚开始学习 Python 的时候都听说过 Python 是一种解释型语言,因为它在运行的时候会逐行解释并执行,而 C 这种是编译型语言 不过我今天看到了一篇文章,作者提出 Pytho…

5G与物联网应用:新一代网络技术融合开创新时代

5G与物联网应用:新一代网络技术融合开创新时代 随着信息技术的不断演进,5G和物联网作为新一代网络技术,正在引领我们走向一个更加智能化、互联互通的新时代。本文将分析5G与物联网应用的技术原理、应用场景与发展趋势,并探讨它们…

使用 matlab 的 Robotics ToolBox 完成5自由雄克机械臂的建模与运动学仿真,并计算8个点的运动轨迹,绘制运动动画

机器人包含5个关节,建立以下的DH参数表 matlab代码 %机器人学导论仿真大作业(RTB) clear clc h figure; axis tight manual filename SchunkRobot_Simulation.gif;%Schunk机械臂参数的输入 L10.35; L20.305; L30.3;%DH参数建立 Joint1 L…

TextMate v2.0.23(文本编辑器)

Mac上好用的文本编辑器是哪个?TextMate 2 mac版是Macos上一款文本编辑器,支持大量编程语言并作为开源开发。该软件与“BBEdit”并成为苹果电脑上的EMACS和vim,对于程序员来说非常的适合,可以定制许多贴心的功能。为专业脚本编写者…

计算一棵二叉树的单分支数(c语言代码实现)

本题代码如下 int num(tree t) {if (!t)return 0;else if ((t->lchild && t->rchildNULL)|| (t->lchildNULL&& t->rchild))//计算单支树return num(t->lchild) num(t->rchild) 1;else return num(t->lchild) num(t->rchild); } 完…

自制数据集:点云变化

代码 在干净的点云数据集中加入噪声时,由于不同点云的尺寸不同,很难控制噪声的幅度。为此,需要将所有点云变换到 [ − 0.5 , 0.5 ] 3 [-0.5,0.5]^3 [−0.5,0.5]3的空间当中。下面是一种将点云数据集中的所有点云变换到 [ − 0.5 , 0.5 ] 3 […

git命令行操作

git remote update origin --prune 更新本地的git分支保持和远程分支一致 git clone -b develop XXX 拉取某个分支的代码 1、创建一个空文件夹,在其中打开Git Bash Here,输入: git clone 刚刚复制的粘贴过来,回车 2、打开你拉下…

ArcGIS Pro设置谷歌影像(无水印)

1 打开软件,命名工程文件,底图(Basemap)选择【天地图】。 2 点击【视图(View)】——>【目录面板(Catalog pane)】,在【门户(Portal)】中搜索【…

20231107-前端学习炫酷菜单效果和折叠侧边栏

炫酷菜单效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>炫酷菜单效果</title><…

【达梦数据库】学习笔记

【达梦数据库】学习笔记 【一】如何使用idea连接达梦数据库【二】idea项目导入本地的达梦数据库驱动jar包&#xff08;方法一&#xff09;【三】idea项目把本地的达梦数据库驱动jar包安装到本地仓库&#xff08;方法二&#xff09; 【一】如何使用idea连接达梦数据库 &#xf…

[LeetCode]-138. 随机链表的复制

目录 题目 解题步骤 1.拷贝节点插入原节点的后面 2.置每个拷贝节点random 3.拷贝节点解下来&#xff0c;尾插到一起&#xff0c;恢复原链表 完整代码 题目 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表…

无人机红外相机的畸变矫正

在项目开展过程中&#xff0c;发现大疆M30T的红外相机存在比较明显的畸变问题&#xff0c;因此需要对红外图像进行畸变矫正。在资料检索过程中&#xff0c;发现对红外无人机影像矫正的资料较少&#xff0c;对此&#xff0c;我从相机的成像原理角度出发&#xff0c;探索出一种效…

Web前端—CSS高级(定位、高级技巧、CSS修饰属性、综合案例:购物网站轮播图)

版本说明 当前版本号[20231108]。 版本修改说明20231107初版20231108对知识点&#xff08;圆点&#xff09;进行补充 目录 文章目录 版本说明目录day08-CSS高级01-定位相对定位绝对定位定位居中固定定位堆叠层级 z-index定位总结 02-高级技巧CSS精灵案例-京东服务HTML结构CS…

Helix Toolkit:为.NET开发者带来的3D视觉盛宴

推荐一个基于.Net开源的3、功能强大的3D图形库和工具包&#xff0c;适用于WPF应用程序的3D渲染和开发。 01 项目简介 Helix Toolkit是一个开源的3D库&#xff0c;主要用于WPF应用程序。它有许多优点&#xff0c;例如提供各种各样的功能&#xff0c;包括基于MVVM的3D模型编辑器…