airflow架构详解


标题: airflow架构详解
日期: 2021-10-24 09:26:43
标签: [airflow,任务调度]
分类: 任务调度

关于airflow,大家应该很清楚它是干嘛的,怎么使用,那么它底层的调度原理到底是啥样的呢?
我大概从2018年下半年,开始使用airflow,第一次使用时,是团队一起调研的,所以,从搭建,到基本使用,再到参数优化,都是经历过的。

后面进入到另一家公司,也是由于我使用过airflow调度系统才找我进去的,所以会使用airflow调度系统,也算一个优势吧。
在这家公司的话,对airflow的使用,就详细到了每一个功能,包括血缘,与atlas结合、升级、参数化等。于是对airflow有了更深入的了解。

今天就为大家介绍airflow的架构,下面来看看。

airflowlogo

如果不清楚,可以看一看我的另一篇介绍文章:
airflow介绍

先画一张架构图来看:
airflow

先介绍下各个角色的作用吧

  • scheduler: 任务调度,不停轮询编译dag文件,发送可执行的任务到消息队列中,将dag信息和调度信息写入mysql中,不停更新dag状态;
  • webserver: 提供web ui界面的dag操作,dag任务的启停,task的运行管理等,查看task的运行情况;
  • worker: 具体执行任务的节点,从celery消费获取到task执行命令,执行对于的脚本语句。将task执行情况写入mysql中;
  • rabbitmq/redis: 消息队列,接收从scheduler端发送过来的task执行命令,等待worker端的celery去消费task;

Dag调度原理

airflow以dag为调度单位,一个dag包含一个或多个task。
dag文件定义了dag的调度详情,其中包含dag的基本信息和dag中task的基本信息。
scheduler不停地编译dag文件,根据dag文件中的crontab表达式、dag运行的历史记录、dag的开关状态,去发现哪些dag需要进行调度,发现了dag需要调度,立马新增一个dag_run实例,修改为running状态,接着不停地调度该dag中的task。
dag的生命周期分为:

none
running
success
failed

正常生命周期的task分为以下几个状态:

none
scheduled
queued
running
success

异常生命周期的task分为:

up_for_retry
failed
shutdown

Task运行原理

scheduler发送每一个可以运行的task任务命令(运行参数、脚本)到消息队列中,然后继续去发现待运行的dag,task的执行就不管了。
airflow worker这个角色,每个worker对应一个celery服务,celery就是分布式任务队列,它也是一个服务,不停地去消费队列中的task任务命令,去执行这些命令、脚本。
当任务执行完之后,就将结果写入到后台元数据库中。

嗯,今天就这样,大概讲了下dag是如何调度的,下次带大家详细了解airflow的元数据库

关注我,我会持续输出一个airflow的专栏,详细讲解airflow相关的技术,希望对大家有帮助。

airflow调度系统,yyds。


书山有路勤为径,学海无涯苦作舟。

欢迎关注我的微信公众号,比较喜欢分享知识,也喜欢宠物,所以做了这2个公众号:
程序员写书

喜欢宠物的朋友可以关注:【电巴克宠物Pets】
电巴克宠物

一起学习,一起进步。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Airflow汉化指的是将开源工作流编排工具Airflow的界面和相关文档进行翻译为中文。Airflow是一个由Apache基金会孵化的项目,它提供了一种可视化的方式来编排、调度和监控数据处理任务。 汉化Airflow有以下几个主要的原因和优势: 1. 提升用户体验:将Airflow界面和相关文档翻译为中文,可以提升中国用户的使用体验和学习效果。对于不熟悉英文的用户来说,使用母语进行操作可以让他们更容易理解和掌握工具的功能和特性。 2. 方便本地化部署:随着中国数据处理领域的迅速发展,越来越多的企业和组织开始采用Airflow进行工作流的管理。汉化Airflow使得本地化部署更加方便,能够更好地满足国内用户的需求。 3. 促进社区发展:开源软件的发展需要全球开发者的参与,而Airflow的汉化可以吸引更多中文用户参与到社区中来。他们可以贡献代码、提交BUG、提供反馈等,为Airflow的改进和完善做出贡献。 4. 推广和普及:随着Airflow在中国的使用越来越广泛,汉化可以更好地推广和普及这个工作流编排工具。通过本土化的努力,能够让更多用户了解和尝试使用Airflow,进而提升其影响力和社区规模。 总之,Airflow的汉化对于提升用户体验、方便本地化部署、促进社区发展和推广普及都有着重要的作用。希望越来越多的人参与到Airflow的汉化工作中来,共同推动这个开源工作流编排工具的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenzuoli

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值