Airflow基本概念

简介: Airflow基本概念

什么是 Airflow

官网:https://airflow.apache.org

Airflow 是一个使用 Python 语言编写的 Data Pipeline 调度和监控工作流的平台。Airflow 是通过 DAG(Directed Acyclic Graph 有向无环图)来管理任务流程的任务调度工具,不需要知道业务数据的具体内容,设置任务的依赖关系即可实现任务调度。

这个平台拥有和 Hive、Presto、MySQL、HDFS、Postgres 等数据源之间交互的能力,并且提供了钩子(Hook)使其拥有很好地扩展性。除了一个命令行界面,该工具还提供了一个基于 Web 的用户界面可以可视化管道的依赖关系、监控进度、触发任务等。

Airflow 特点

  • 可编程:使用 Python 语言进行编写,支持自定义操作和扩展。
  • 可扩展:支持通过插件扩展功能。
  • 可调度:可以在指定时间运行任务,支持依赖性和优先级调度。
  • 可监控:提供丰富的监控和日志记录功能,方便用户监控任务执行状态和调试问题。
  • 可视化:提供 Web 界面来可视化任务和工作流程的状态和进度。

Airflow 的架构

在一个可扩展的生产环境中,Airflow 含有以下组件:

  • 元数据库:这个数据库存储有关任务状态的信息
  • 调度器:Scheduler 是一种使用 DAG 定义结合元数据中的任务状态来决定哪些任务需要被执行以及任务执行优先级的过程。调度器通常作为服务运行
  • 执行器:Executor 是一个消息队列进程,它被绑定到调度器中,用于确定实际执行每个任务计划的工作进程。有不同类型的执行器,每个执行器都使用一个指定工作进程的类来执行任务。例如,LocalExecutor 使用与调度器进程在同一台机器上运行的并行进程执行任务。其他像 CeleryExecutor 的执行器使用存在于独立的工作机器集群中的工作进程执行任务
  • Workers:这些是实际执行任务逻辑的进程,由正在使用的执行器确定

Airflow 解决哪些问题

通常,在一个运维系统,数据分析系统,或测试系统等大型系统中,我们会有各种各样的依赖需求。包括但不限于:

  • 时间依赖:任务需要等待某一个时间点触发
  • 外部系统依赖:任务依赖外部系统需要调用接口去访问
  • 任务间依赖:任务 A 需要在任务 B 完成后启动,两个任务互相间会产生影响
  • 资源环境依赖:任务消耗资源非常多,或者只能在特定的机器上执行

Crontab 可以很好地处理定时执行任务的需求,但仅能管理时间上的依赖。

Airflow 的核心概念是 DAG(有向无环图)。DAG 由一个或多个 Task 组成,而这个 DAG 正是解决了上文所说任务间的依赖问题。任务执行的先后依赖顺序、多个 Task 之间的依赖关系可以很好的用 DAG 表示完善。

Airflow 同样完整的支持 Crontab 表达式,也支持直接使用 Python 的 datatime 模块表述时间,还可以用 datatime 的 delta 表述时间差。

Airflow 名词

  1. Dynamic:Airflow 配置需要使用 Python,允许动态生产管道。这允许编写可动态实例化管道的代码
  2. Extensible:轻松定义自己的运算符,执行程序并扩展库,使其适合于您的环境
  3. Elegant:Airlfow 是精简的,使用功能强大的 Jinja 模板引擎,将脚本参数化内置于 Airflow 的核心中
  4. Scalable:Airflow 具有模板块架构,并使用消息队列来安排任意数量的工作任务。
相关文章
|
SQL 存储 数据采集
【技术分享】元数据与数据血缘实现思路
【技术分享】元数据与数据血缘实现思路
7277 0
|
5月前
|
数据采集 存储 安全
一文带你讲透数据仓库分层!
在数据处理中,常遇到数据混乱、指标不一致、开发排期长等问题,根源往往在于数据分层设计不合理。本文详解数据仓库分层(ODS、DWD、DWS、DM、APP等),阐述其在数据清洗、整合、管理及应用中的关键作用,帮助提升数据质量、减少重复开发、增强系统扩展性,从而高效支撑业务决策。
一文带你讲透数据仓库分层!
|
9月前
|
Kubernetes 大数据 调度
Airflow vs Argo Workflows:分布式任务调度系统的“华山论剑”
本文对比了Apache Airflow与Argo Workflows两大分布式任务调度系统。两者均支持复杂的DAG任务编排、社区支持及任务调度功能,且具备优秀的用户界面。Airflow以Python为核心语言,适合数据科学家使用,拥有丰富的Operator库和云服务集成能力;而Argo Workflows基于Kubernetes设计,支持YAML和Python双语定义工作流,具备轻量化、高性能并发调度的优势,并通过Kubernetes的RBAC机制实现多用户隔离。在大数据和AI场景中,Airflow擅长结合云厂商服务,Argo则更适配Kubernetes生态下的深度集成。
1123 34
|
6月前
|
机器学习/深度学习 人工智能 运维
【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频与稳定性分析(包含锁相环电流环)(Simulink仿真实现)
【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频与稳定性分析(包含锁相环电流环)(Simulink仿真实现)
316 0
|
决策智能 数据库 开发者
使用Qwen2.5+SpringBoot+SpringAI+SpringWebFlux的基于意图识别的多智能体架构方案
本项目旨在解决智能体的“超级入口”问题,通过开发基于意图识别的多智能体框架,实现用户通过单一交互入口使用所有智能体。项目依托阿里开源的Qwen2.5大模型,利用其强大的FunctionCall能力,精准识别用户意图并调用相应智能体。 核心功能包括: - 意图识别:基于Qwen2.5的大模型方法调用能力,准确识别用户意图。 - 业务调用中心:解耦框架与业务逻辑,集中处理业务方法调用,提升系统灵活性。 - 会话管理:支持连续对话,保存用户会话历史,确保上下文连贯性。 - 流式返回:支持打字机效果的流式返回,增强用户体验。 感谢Qwen2.5系列大模型的支持,使项目得以顺利实施。
4204 8
使用Qwen2.5+SpringBoot+SpringAI+SpringWebFlux的基于意图识别的多智能体架构方案
|
存储 缓存 监控
ClickHouse 架构原理及核心特性详解
ClickHouse 是由 Yandex 开发的开源列式数据库,专为 OLAP 场景设计,支持高效的大数据分析。其核心特性包括列式存储、字段压缩、丰富的数据类型、向量化执行和分布式查询。ClickHouse 通过多种表引擎(如 MergeTree、ReplacingMergeTree、SummingMergeTree)优化了数据写入和查询性能,适用于电商数据分析、日志分析等场景。然而,它在事务处理、单条数据更新删除及内存占用方面存在不足。
4072 21
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
存储 分布式计算 监控
使用Airflow管理大数据工作流:自动化任务调度与依赖
【4月更文挑战第8天】Apache Airflow是一款开源的工作流管理工具,用于高效组织和调度大数据任务。它基于DAG(有向无环图)定义任务依赖,通过Operators(如BashOperator、PythonOperator)执行不同工作,并通过Scheduler和Executor协调任务执行。Web UI提供监控界面,Metadata DB存储元数据。创建DAG涉及定义DAG属性、Task及依赖关系,然后部署到Airflow环境。进阶功能包括Variables和Connections管理、XCom跨Task通信、自定义Operator及Plugin、高级调度与告警设置。
1541 0
|
存储 关系型数据库 MySQL
MySQL MVCC深度解析:掌握并发控制的艺术
【10月更文挑战第23天】 在数据库领域,MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种重要的并发控制机制,它允许多个事务并发执行而不产生冲突。MySQL作为广泛使用的数据库系统,其InnoDB存储引擎就采用了MVCC来处理事务。本文将深入探讨MySQL中的MVCC机制,帮助你在面试中自信应对相关问题。
456 3
|
存储 监控 Linux
Airflow【部署 01】Airflow官网Quick Start实操(一篇学会部署Airflow)
【2月更文挑战第7天】Airflow【部署 01】Airflow官网Quick Start实操(一篇学会部署Airflow)
2030 1