背景介绍
Apache Airflow(或简称Airflow)是一个以编程方式创作,计划和监视工作流的平台。
当工作流定义为代码时,它们将变得更加可维护、可版本控制、可测试和协作。
使用 Airflow 将工作流创作为任务的有向无环图 (DAG)。Airflow 调度程序在遵循指定的依赖项的同时,在一组工作线程上执行您的任务。丰富的命令行实用程序使在 DAG 上执行复杂的手术变得轻而易举。丰富的用户界面使您可以轻松可视化生产中运行的管道、监视进度并在需要时解决问题。
Airflow最适合大多数静态且缓慢变化的工作流程。当 DAG 结构在一次运行到下一次运行之间相似时,它会阐明工作单元和连续性。其他类似的项目包括Luigi,Oozie和Azkaban。
Airflow 通常用于处理数据,但认为理想情况下任务应该是幂等的(即任务的结果将是相同的,并且不会在目标系统中创建重复的数据),并且不应将大量数据从一个任务传递到下一个任务(尽管任务可以使用 Airflow 的 XCom 功能传递元数据)。对于高容量、数据密集型任务,最佳做法是委派给专门从事此类工作的外部服务。
Airflow 不是流解决方案,但它通常用于处理实时数据,从流中批量提取数据。
使用原则:
- 动态:气流管道是配置即代码(Python),允许动态管道生成。这允许编写动态实例化管道的代码。
- 可扩展:轻松定义您自己的运算符、执行器并扩展库,使其适合适合您的环境的抽象级别。
- 优雅:气流管道精简而明确。参数化脚本是使用强大的 Jinja 模板引擎内置到 Airflow 的核心中。
- 可扩展:Airflow 具有模块化架构,并使用消息队列来编排任意数量的工作线程。
实战总结
DAG:环境中所有 DAG 的概述。
网格:跨越时间的 DAG 的网格表示形式。
图形:特定运行的 DAG 依赖项及其当前状态的可视化效果。
任务持续时间:一段时间内在不同任务上花费的总时间。
甘特图:DAG 的持续时间和重叠。
代码:查看 DAG 源代码的快速方法。
使用总结
Airflow是一个可编程,调度和监控的工作流平台,基于有向无环图(DAG),airflow可以定义一组有依赖的任务,按照依赖依次执行。airflow提供了丰富的命令行工具用于系统管控,而其web管理界面同样也可以方便的管控调度任务,并且对任务运行状态进行实时监控,方便了系统的运维和管理。
本文由博客一文多发平台 OpenWrite 发布!