Airflow 介绍 作者:马育民 • 2023-04-09 10:26 • 阅读:10094 # 介绍 Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。 Airflow 是通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具, 不需要知道业务数据的具体内容,设置任务的依赖关系即可实现任务调度。 这个平台拥有和 Hive、Presto、MySQL、HDFS、Postgres 等数据源之间交互的能力,并且提供了钩子(hook)使其拥有很好地扩展性。 除了一个命令行界面,该工具还提供了一个基于 Web 的用户界面可以可视化管道的依赖关系、监控进度、触发任务等。 ### 官网 https://airflow.apache.org/ # 应用场景 在运维系统,数据分析系统,或测试系统等大型系统中,我们会有各种各样的依赖需求: - 时间依赖:任务需要等待某一个时间点触发。 - 外部系统依赖:任务依赖外部系统需要调用接口去访问。 - 任务间依赖:任务 A 需要在任务 B 完成后启动,两个任务互相间会产生影响。 - 资源环境依赖:任务消耗资源非常多, 或者只能在特定的机器上执行。 # 架构 [](/upload/0/0/1IX5Hl01ciZQ.png) 有以下组件: - 元数据库:这个数据库存储有关任务状态的信息。 - 调度器:Scheduler 是一种使用 DAG 定义结合元数据中的任务状态来决定哪些任务需要被执行以及任务执行优先级的过程。 调度器通常作为服务运行。 - 执行器:Executor 是一个消息队列进程,它被绑定到调度器中,用于确定实际执行每个任务计划的工作进程。 有不同类型的执行器,每个执行器都使用一个指定工作进程的类来执行任务。 例如,LocalExecutor 使用与调度器进程在同一台机器上运行的并行进程执行任务。 其他像 CeleryExecutor 的执行器使用存在于独立的工作机器集群中的工作进程执行任务。 - Workers:这些是实际执行任务逻辑的进程,由正在使用的执行器确定。 # DAG Airflow 的核心概念是 DAG (有向无环图)。DAG 由一个或多个 task 组成,而这个 DAG 正是解决了上文所说任务间的依赖问题。 任务执行的先后依赖顺序、多个 task 之间的依赖关系可以很好的用 DAG 表示完善。 # crontab crontab 可以很好地处理定时执行任务的需求,但仅能管理时间上的依赖。 Airflow 同样完整的支持 crontab 表达式,也支持直接使用 python 的 datatime 模块表述时间,还可以用 datatime 的 delta 表述时间差。 参考: https://zhuanlan.zhihu.com/p/84332879 原文出处:https://malaoshi.top/show_1IX5Hkq4xzA9.html