airflow的check机制介绍


标题: airflow的check机制介绍
日期: 2021-12-18 11:26:14
标签: [airflow,check]
分类: 调度系统

我们使用airflow的其中一个原因,就是管理任务流,及任务流之间的依赖关系。

desert

传统的任务调度,大概就是通过linux自带的crontab方式进行任务的定时调度,那么如果crontab任务过多,crontab表达式是按照顺序执行的,那么怎么完成复杂的依赖问题呢。

airflow就可以解决复杂的依赖问题,任务流之间如何串行、并行执行,只需定义一个crontab表达式即可,但是这个表达式,不是交给linux,而是有airflow自己的调度引擎,去发现该任务是否到时间点去执行了。

那么airflow是怎样解决任务流之间的依赖问题的呢?

task之间依赖关系

看下图:
flow

在dag的定义文件中,包含了task的定义及task之间的依赖关系,依赖关系有2中方式:

task1 >> task2
task1.set_downstream(task2)
task2.set_upstream(task1)

上面的三种定义task依赖关系的模式,表示task2是task1的下游。

dag之间依赖关系

目前airflow提供的dag之间依赖关系是一种sensor:ExternalTaskSensor
它可以添加如下几个主要参数:

external_dag_id     --上游dag_id
external_task_id    --上游task_id,如果不设置,那么检查dag状态
execution_delta     --上游与本任务调度时间差
execution_date_fn   --上游与本任务调度时间差计算方法

总结一下

总结一下,如果任务量非常多,dag任务达到千个级别,那么依赖关系会非常复杂,而且面对频繁的变动dag调度时间,如果上游改变了调度时间,下游的依赖时间差execution_delta没做相应的改变,那么会依赖失败,所以,airflow自带的dag之间依赖会有缺陷。

目前我们生产上的解决办法就是,重写check,下游dag不依赖上游dag的具体时间,而是根据上游设置的调度时间schedule_interval计算出来对应的调度时间,进行检查,上游上一批次的状态,这样就完美解决了上游修改调度时间,导致下游check失败的问题,因为下游的check机制,会自动获取上游的调度时间。

ok,今天就到这里,如果你们还有什么地方不了解的,可以跟我提。
我的邮箱是:

chenzuoli709@163.com

Keep reading, Keep writing, Keep coding.

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

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

一起学习,一起进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chenzuoli

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

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

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

打赏作者

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

抵扣说明:

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

余额充值