第 7 章 协调管道 协调管道
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
前几章介绍了数据管道的构建 块,包括数据摄取、数据转换和机器学习管道中的步骤。本章将介绍如何 "协调 "或连接这些模块或步骤。
协调可确保管道中的步骤以正确的顺序运行,并妥善管理步骤之间的依赖关系。
当我在第 2 章介绍协调管道的挑战时,我还介绍了工作流协调平台(也称为工作流管理系统(WMS)、协调平台或协调框架)的概念。在本章中,我将重点介绍 Apache Airflow,它是最流行的此类框架之一。虽然本章的大部分内容都是以 Airflow 为例,但其中的概念也可以移植到其他框架中。事实上,我将在本章后半部分介绍一些 Airflow 的替代方案。
最后,本章后面的章节将讨论管道协调中一些更高级的概念,包括在数据基础架构上协调多个管道。
有向无环图
虽然我在第 2 章中介绍过 DAG,但还是值得重复一下它们是什么。 本章将讲述如何在 Apache Airflow 中设计和实现 DAG,以协调数据管道中的任务。
流水线步骤(任务)总是有指向性的,这意味着它们以一个或多个任务开始,以一个或多个特定任务结束。这是保证执行路径所必需的。换句话说,它能确保在所有从属任务成功完成之前,任务不会运行。
流水线图还必须是非循环的,这意味着任务不能指向之前完成的任务。换句话说,它不能循环返回。如果可以,那么流水线就可以无休止地运行!
您一定还记得第 2 章中的 DAG 示例,如图 7-1 所示。这是一个在 Apache Airflow 中定义的 DAG。
图 7-1. 包含四个任务的 DAG。任务 A 完成后,任务 B 和任务 C 运行。当这两个任务都完成后,任务 D 开始运行。
Airflow 中的任务可以代表任何内容,从 SQL 语句的执行到 Python 脚本的执行。正如您在以下章节中看到的,Airflow 允许您定义、调度和执行数据管道中的任务,并确保它们以正确的顺序运行。
Apache 气流设置和概述
Airflow 是一个开源项目,由 Maxime Beauchemin 于 2014 年在 Airbnb 启动。 它于 2016 年 3 月加入 Apache 软件基金会的孵化器计划。建立 Airflow 的目的是为了解决数据工程团队面临的一个共同挑战:如何构建、管理和监控涉及多个相互依赖任务的工作流(尤其是数据管道)。
自发布以来的六年间,Airflow 已成为数据团队中最受欢迎的工作流管理平台之一。它拥有易于使用的网页界面、先进的命令行工具、内置调度程序和高度的可定制性,这意味着它几乎适用于任何数据基础架构。虽然它是用 Python 构建的,但可以执行在任何语言或平台上运行的任务。事实上,虽然它最常用于管理数据管道,但它确实是一个通用平台,可以协调任何类型的依赖性任务。
备注
本章中的代码示例和概述参考了 Airflow 1.x 版本。Airflow 2.0 即将发布,并有望实现一些重大改进,如闪亮的新 Web UI、全新改进的调度程序、功能齐全的 REST API 等。尽管本章的具体内容涉及 Airflow 1.x,但其概念在 Airflow 2.0 中仍然适用。此外,此处提供的代码只需稍加修改或无需修改即可与 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access