导入
简介
本课程将向你介绍 Apache Airflow。
Apache Airflow 是一个开源的工作流管理平台。它于2014年10月在 Airbnb 诞生,最初是为了应对公司日益复杂的业务流程而开发的解决方案。通过创建 Airflow,Airbnb 实现了工作流的程序化编写、调度,并可通过内置的 Airflow 用户界面进行监控。
Airflow 可以被描述为一个用于定义、执行和监控工作流的平台。所谓“工作流”,可以理解为为达成特定目标而执行的一系列步骤。例如,在你的公司中,可能存在这样一个任务:从机器中复制日志数据并上传至 S3 存储桶;随后,第二个 MapReduce 任务从该 S3 桶读取日志数据,检测异常情况(如登录次数过多),并将结果写入 HDFS 位置;最后,第三个任务读取第二个任务的输出,并将其插入关系型数据库。这类数据处理管道在企业中非常常见。随着大数据团队的发展,其面临的一个关键挑战是如何将相关任务串联成端到端的完整工作流。在 Airflow 出现之前,业界常用的工具是 Oozie,但它存在诸多局限性。近年来,Airflow 逐渐取代 Oozie,成为构建复杂工作流的首选工具。

管道示例
Apache Airflow 与其他工作流管理系统的区别
以下是 Airflow 与其它大数据工作流管理平台(如 Oozie)之间的主要差异:
- DAG(有向无环图)使用 Python 语言编写,相比 Oozie 所使用的 Java,学习门槛更低,且更受非技术背景人员欢迎。
- Airflow 拥有庞大的社区支持,因此很容易找到与各大服务或云提供商集成的解决方案。
- Airflow 更加灵活、表达能力更强,能够构建极其复杂的工作流。
- Airflow 提供丰富的性能指标,便于对工作流进行分析和优化。
- Airflow 的 API 功能更强大,其用户界面也被认为优于大多数其他工作流管理系统。
- Airflow 的一个核心优势在于其模板功能:在模板渲染时,可将变量或表达式替换为实际值。这使得诸如根据 DAG 运行日期动态引用唯一文件名等场景成为可能。Airflow 使用 Jinja 作为其 Python 模板引擎,为管道开发者提供了一套内置参数和宏。
截至目前,已推出多种托管的 Airflow 云服务,例如 Google Cloud Composer 和 Astronomer.io。
示例
Airflow 基于 Python 构建,这正是其广泛普及的重要原因之一,因为 Python 是一种被广泛使用的编程语言。下面通过一个示例来展示如何利用 Airflow 简单而灵活地搭建数据管道和工作流。
1# 点击下方组件中的“点击启动应用!”按钮 2 3# 等待片刻后,你将在组件中看到 Airflow 的 Web 服务器界面加载完成 4 5# 点击组件右侧的箭头图标,界面将在新标签页中打开。你会看到一个 DAG 列表。DAG 即有向无环图,可视为工作流的设计蓝图。 6 7# 列表中的第一个 DAG 是 "example_bash_operator"。你可以点击其左侧的启用按钮来激活它。稍等片刻后刷新浏览器,观察该工作流运行至完成。你应该能看到“最近运行”一列出现对应记录。 8 9# 恭喜!你已成功运行了第一个 Airflow DAG 工作流 :)