Apache Airflow (十三) :Airflow分布式集群搭建及使用-原因及

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

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

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


目录

1. Airflow分布式集群搭建原因

2. Airflow分布式集群其他扩展

2.1 扩展Worker节点

2.2 扩展Master节点

2.3 Scheduler HA


1. Airflow分布式集群搭建原因

在稳定性要求较高的场景中,例如:金融交易系统,airflow一般采用集群、高可用方式搭建部署,airflow对应的进程分布在多个节点上运行,形成Airflow集群、高可用部署,架构图如下:

以上集群、高可用方式搭建Airflow好处如下:

  1. 如果一个worker节点崩溃挂掉,集群仍然可以正常利用其他worker节点来调度执行任务。
  2. 当工作流中有内存密集型任务,任务最好分布在多态机器上执行以得到更好效果,airflow分布式集群满足这点。

2. Airflow分布式集群其他扩展

2.1 扩展Worker节点

我们可以通过向集群中添加更多的worker节点来水平扩展集群,并使这些新节点使用同一个元数据库,从而分布式处理任务。由于Worker不需要再任何进程注册即可执行任务,因此worker节点可以在不停机,不重启服务下的情况进行扩展。

我们也可以通过增加单个worker节点的进程数来垂直扩展集群,可以通过修改airflow配置文件AIRFLOW_HOME/airflow.cfg中celeryd_concurrency的值来实现,例如:celeryd_concurrency=30,我们可以根据集群上运行任务性质、CPU的内核数量等增加Worker单节点并发数量来满足实际需求。

扩展worker节点后的架构如下:

2.2 扩展Master节点

我们还可以向集群中添加更多的主节点,以扩展主节点上运行的服务。我们可以扩展webserver,防止太多的HTTP请求出现在一台机器上防止webserver挂掉,需要注意,Master节点包含Scheduler与webServer,在一个Airflow集群中我们只能一次运行一个Scheduler进程,如果有多个Scheduler运行,那么可能出现同一个任务被执行多次,导致任务流重复执行。

Master扩展参照后续Airflow分布式集群搭建,扩展Master后的架构如下:

2.3 Scheduler HA

扩展Master后的Airflow集群中只能运行一个Scheduler,那么运行的Scheudler进程挂掉,任务同样不能正常调度运行,这种情况我们可以在两台机器上部署scheduler,只运行一台机器上的Scheduler进程,一旦运行Schduler进程的机器出现故障,立刻启动另一台机器上的Scheduler即可,这种就是Schduler HA,我们可以借助第三方组件airflow-scheduler-failover-controller实现Scheduler的高可用。

详细操作参照后续Airflow分布式集群搭建,加入Scheduler HA的架构如下:


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Acconeer的A121-60GHz毫米波雷达传感器SDK移植及测距示例(STM32L496为例)

基于Acconeer的A121-60GHz毫米波雷达传感器SDK移植及测距示例(STM32L496为例) 工程: Keil工程资源 参考资料: A121 datasheet 1.3 A121 HAL Software Integration User Guide A121 STM32CubeIDE User Guide 官方参考示例工程&a…

linux rsyslog综合实战2

本次我们通过rsyslog服务将A节点服务器上的两个(E.g:多个日志也可以)日志(Path:/var/log/245-1.log、245-2.log)实时同步到B节点服务器目录下(Path:/opt/rsyslog/245) 1.rsyslog架构 2.环境信息 环境信息 HostnameIpAddressOS versionModuleNotersyslog1192.168.10.245CentOS…

【Docker】从零开始:3.Docker运行原理

【Docker】从零开始:3.Docker运行原理 Docker 工作原理Docker与系统的关系Docker平台架构图解 Docker 工作原理 Docker与系统的关系 Docker 是一个 Client-Server 结构的系统,Docker 守尹进程运行在王机上, 然后通过 Socket 连接从各尸端坊…

【广州华锐互动】VR溺水预防教育:在虚拟世界中学会自救!

在现代社会中,水上安全和救援行动的重要性不言而喻。尤其在自然灾害、游泳事故或航海事故中,有效的救援行动可以挽救许多生命。然而,传统的救援训练往往存在成本高、风险大、效率低等问题。在这样的背景下,虚拟现实(VR…

1.Gin 介绍

1.Gin 介绍 介绍 Gin 是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,如果你是性能和高效的追求者,我们推荐你使用 Gin 框架。 Gin 最擅长的就是 Api 接口的高并发,如果项目的规模不大,业务相对简单&a…

JVM垃圾收集器

什么是垃圾收集器 Java虚拟机的垃圾收集器是内存回收的具体实现,主要用于回收不再使用的对象,释放内存空间。Java虚拟机提供了多种垃圾收集器,不同的垃圾收集器适用于不同的场景和需求。 在C中,对象所占的内存在程序结束运行之前…

【Spring】使用xml配置AOP

文章目录 1.前言2.xml配置AOP3. 总结 1.前言 在之前的学习中,都是使用注解的方式进行AOP的配置.其实使用xml配置文件也可以配置AOP. 2.xml配置AOP xml配置AOP方法如下: 添加相关依赖 <dependencies><dependency><groupId>org.springframework</groupId…

vue实现el-menu与el-tabs联动

效果图如下&#xff1a; 当标签栏很多的时候效果图如下&#xff1a; 左侧菜单布局 &#xff08;$route.path高亮显示激活路由 :default-active"$route.path"&#xff09; <el-menu:default-active"$route.path"class"el-menu-vertical-demo"b…

【Hello Go】Go语言文本文件处理

文本文件处理 字符串处理字符串操作ContainsJoinindexrepeatReplaceSplitTrimFields 字符串转换AppendFormatParse 正则表达式Json处理编码Json通过结构体生产Json通过map生产json 解码Json解析到结构体解析到interface 文件操作相关api介绍建立和打开文件关闭文件写文件读文件…

深度学习卫星遥感图像检测与识别 -opencv python 目标检测 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐…

优秀智慧园区案例 - 三亚市崖州湾科技城智慧园区,先进智慧园区建设方案经验

一、项目背景 三亚崖州湾科技城作为海南自贸港建设的重点园区&#xff0c;是重点推进的海南自贸港先导项目之一。崖州湾科技城全力抢抓有利时机&#xff0c;进一步拓宽发展思路&#xff0c;持续深化体制机制创新&#xff0c;牢牢把握“打造产学研城深度融合的聚集地”这一核心…

nodejs express vue uniapp新闻发布系统源码

开发技术&#xff1a; node.js&#xff0c;mysql5.7&#xff0c;vscode&#xff0c;HBuilder nodejs express vue uniapp 功能介绍&#xff1a; 用户端&#xff1a; 登录注册 首页显示搜索新闻&#xff0c;新闻分类&#xff0c;新闻列表 点击新闻进入新闻详情&#xff0…

代码随想录第六十三天 | 单调栈:寻找 左边 / 右边 距离当前元素最近的 更小 元素的 下标(暴力,双指针,单调栈)(84);代码随想录主要题目结束

1、寻找 左边 / 右边 距离当前元素最近的 更小 元素的 下标 1.1 leetcode 84&#xff1a;柱状图中最大的矩形 第一遍代码思路错了&#xff0c;如&#xff1a;输入[2,1,2]&#xff0c;对于2&#xff0c;因为比栈顶元素1大&#xff0c;然后就会直接得出2&#xff08;1&#xff…

vite构建项目不能使用require解决方案

在utils文件夹下创建一个getImgUrl.ts文件 /** vite的特殊性, 需要处理图片 */ export const require (imgPath: string) > {try {const handlePath imgPath.replace(, ..)console.log(handlePath::, imgPath)return new URL(handlePath, import.meta.url).href} catch (…

约束概念和分类、运用

约束的概念&#xff1a; 1. 约束是作用于表列上的规则&#xff0c;用于限制加入表的数据 2.约束的存在保证了数据库中数据的正确性&#xff0c;有效性和完整性。 约束的分类&#xff1a; 非空约束&#xff1a;NOT NULL 唯一约束&#xff1a;UNIQUE 主键约束&#xff1a;PRIMARY…

01-论文阅读-Deep learning for anomaly detection in log data: a survey

01-论文阅读-Deep learning for anomaly detection in log data: a survey 文章目录 01-论文阅读-Deep learning for anomaly detection in log data: a survey摘要I 介绍II 背景A 初步定义B 挑战 III 调查方法A 搜索策略B 审查的功能 IV 调查结果A 文献计量学B 深度学习技术C …

leetcode算法之分治-归并

目录 1.排序数组2.数组中的逆序对3.计算右侧小于当前元素的个数4.翻转对 1.排序数组 排序数组 //分治-归并 class Solution {int tmp[50010]; public:vector<int> sortArray(vector<int>& nums) {mergeSort(nums,0,nums.size()-1);return nums;}void mergeS…

线程池简介及其简单实现

如果需要频繁的创建销毁线程, 就需要想办法降低创建和销毁的开销, 而线程池就是一个很好的选择: 提前创建好一些线程, 等到需要使用线程的时候, 直接从池子里拿一个就好了, 当不再使用该线程时, 就放回到池子里. 那么此时就从 创建/销毁线程 -> 池子里取线程/将线程还到池子…

找不到vcruntime140_1.dll,无法继续执行代码怎么办?5个可以解决的方案分享

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“VCRuntime140_1.dll缺失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题&#xff0c;我们需要进行修复操作。本文将介绍5个修复VCRuntime140_1.dll缺失的方法&#xff…

解锁电力安全密码:迅软DSE助您保护机密无忧

电力行业信息化水平不断提高&#xff0c;明显提升了电力企业的生产运营能力&#xff0c;然而随着越来越多重要信息存储在终端计算机中&#xff0c;电力面临的信息安全挑战也越来越多。 作为关键基础设施的基础&#xff0c;电力企业各部门产生的资料文档涵盖着大量机密信息&…