-
内容大纲
数据管道通过整合、清理、分析、可视化等方式来管理初始收集的数据流。Apache Airflow提供了一个统一的平台,可以使用它设计、实施、监控和维护数据的流动。Airflow具有易于使用的UI、即插即用的选项以及灵活的Python脚本,这些都使Airflow能够非常轻松地完成任何数据管理任务。
在《Apache Airflow数据编排实战》中,介绍了如何构建和维护有效的数据管道。与你一同探索最常见的使用模式,包括聚合多个数据源、连接到数据湖以及云端部署。可以将本书作为Airflow的实用指南,本书涵盖了为Airflow提供动力的有向无环图(DAG)的各方面知识,以及如何根据工作需求对其进行自定义的技术。
主要内容
构建、测试及部署Airflow管道作为DAG
自动对数据进行移动和转换
使用回填技术分析历史数据集
开发自定义组件
在生产环境中搭建Airflow
本书面向具有一定Python编程基础的程序员、DevOps工程师、数据工程师、机器学习工程师及系统管理员。 -
作者介绍
-
目录
第Ⅰ部分 入门
第1章 遇见Apache Airflow
1.1 数据管道介绍
1.1.1 数据管道的图形表示
1.1.2 运行管道图
1.1.3 管道图与顺序脚本
1.1.4 使用工作流管理器运行数据流
1.2 Airflow介绍
1.2.1 通过Python代码灵活定义数据管道
1.2.2 调度并执行数据管道
1.2.3 监控和处理故障
1.2.4 增量载入和回填
1.3 何时使用Airflow
1.3.1 选择Airflow的原因
1.3.2 不使用Airflow的理由
1.4 本书的其余部分
1.5 本章小结
第2章 Airflow DAG深度解析
2.1 从大量数据源中收集数据
2.2 编写你的第一个Airflow DAG
2.2.1 任务与operator
2.2.2 运行任意Python代码
2.3 在Airflow中运行DAG
2.3.1 在Python环境中运行Airflow
2.3.2 在Docker容器中运行Airflow
2.3.3 使用Airflow图形界面
2.4 运行定时任务
2.5 处理失败的任务
2.6 本章小结
第3章 Airflow中的调度
3.1 示例:处理用户事件
3.2 定期执行DAG
3.2.1 使用调度器计划性运行
3.2.2 基于cron的时间间隔
3.2.3 基于频率的时间间隔
3.3 增量处理数据
3.3.1 获取增量事件数据
3.3.2 使用执行日期的动态时间参考
3.3.3 对数据执行分区
3.4 理解Airflow的执行日期
3.5 使用回填技术填补过去的空白
3.6 任务设计的最佳实践
3.6.1 原子性
3.6.2 幂等性
3.7 本章小结
第4章 使用Airflow context对任务进行模板化
4.1 为Airflow准备数据
4.2 任务context和Jinja模板
4.2.1 对operator使用参数模板
4.2.2 模板中可用的变量及表达式
4.2.3 对PythonOperator使用模板
4.2.4 为PythonOperator提供变量
4.2.5 检查模板化参数
4.3 连接到其他系统
4.4 本章小结
第5章 定义任务之间的依赖关系
5.1 基本依赖关系
5.1.1 线性依赖关系
5.1.2 扇入/扇出依赖
5.2 分支
5.2.1 在任务内部执行分支操作
5.2.2 在DAG中使用分支技术
5.3 带有条件的任务
5.3.1 在任务内部使用条件
5.3.2 对DAG使用条件
5.3.3 使用内置operator
5.4 触发条件详解
5.4.1 什么是触发规则
5.4.2 失败的影响
5.4.3 其他触发规则
5.5 在任务之间共享数据
5.5.1 使用XCom共享数据
5.5.2 XCom的适用场景
5.5.3 使用自定义XCom后端存储
5.6 使用Taskflow API连接Python任务
5.6.1 使用Taskflow API简化Python任务
5.6.2 Taskflow API的适用场景
5.7 本章小结
第Ⅱ部分 Airflow深入学习
第6章 触发工作流
6.1 带有传感器的轮询条件
6.1.1 轮询自定义条件
6.1.2 传感器的异常情况
6.2 触发其他DAG
6.2.1 使用TriggerDagRunOperator执行回填操作
6.2.2 轮询其他DAG的状态
6.3 使用REST/CLI启动工作流
6.4 本章小结
第7章 与外部系统通信
7.1 连接到云服务
7.1.1 安装额外的依赖软件包
7.1.2 开发一个机器学习模型
7.1.3 在本地开发外部系统程序
7.2 在系统之间移动数据
7.2.1 实现PostgresToS3Operator
7.2.2 将繁重的任务“外包”出去
7.3 本章小结
第8章 创建自定义组件
8.1 从PythonOperator开始
8.1.1 模拟电影评分API
8.1.2 从API获取评分数据
8.1.3 构建具体的DAG
8.2 创建自定义hook
8.2.1 设定自定义hook
8.2.2 使用MovielensHook构建DAG
8.3 构建自定义operator
8.3.1 创建自定义operator
8.3.2 创建用于获取评分数据的operator
8.4 创建自定义传感器
8.5 将你的组件打包
8.5.1 引导Python包
8.5.2 安装你的Python包
8.6 本章小结
第9章 测试
9.1 开始测试
9.1.1 所有DAG的完整性测试
9.1.2 设置CI/CD管道
9.1.3 编写单元测试
9.1.4 pytest项目结构
9.1.5 使用磁盘上的文件测试
9.2 在测试中使用DAG和任务context
9.3 使用测试进行开发
9.4 使用Whirl模拟生产环境
9.5 创建DTAP环境
9.6 本章小结
第10章 在容器中运行任务
10.1 同时使用多个不同operator所面临的挑战
10.1.1 operator接口和实现
10.1.2 复杂且相互冲突的依赖关系
10.1.3 转向通用operator
10.2 容器
10.2.1 什么是容器
10.2.2 运行第一个Docker容器
10.2.3 创建Docker映像
10.2.4 使用卷持久化数据
10.3 容器与Airflow
10.3.1 容器中的任务
10.3.2 为什么使用容器
10.4 在Docker中运行任务
10.4.1 使用DockerOperator
10.4.2 为任务创建容器映像
10.4.3 使用Docker任务创建DAG
10.4.4 基于Docker的工作流
10.5 在Kubernetes中运行任务
10.5.1 Kubernetes介绍
10.5.2 设置Kubernetes
10.5.3 使用KubernetesPodOperator
10.5.4 诊断Kubernetes相关的问题
10.5.5 与基于docker的工作流的区别
10.6 本章小结
第Ⅲ部分 Airflow实践
第11章 最佳实现
11.1 编写清晰的DAG
11.1.1 使用风格约定
11.1.2 集中管理凭证
11.1.3 统一指定配置详细信息
11.1.4 避免在DAG定义中计算
11.1.5 使用工厂函数生成通用模式
11.1.6 使用任务组对相关任务进行分组
11.1.7 为重大变更创建新的DAG
11.2 设计可重用的任务
11.2.1 要求任务始终满足幂等性
11.2.2 任务结果的确定性
11.2.3 使用函数式范式设计任务
11.3 高效处理数据
11.3.1 限制处理的数据量
11.3.2 增量载入与增量处理
11.3.3 缓存中间数据
11.3.4 不要将数据存储在本地文件系统
11.3.5 将工作卸载到外部系统或源系统
11.4 管理资源
11.4.1 使用资源池管理并发
11.4.2 使用SLA和告警来检测长时间运行的任务
11.5 本章小结
第12章 在生产环境中使用Airflow
12.1 Airflow架构
12.1.1 挑选适合的执行器
12.1.2 为Airflow配置metastore
12.1.3 深入了解调度器
12.2 安装每个执行器
12.2.1 设置SequentialExecutor
12.2.2 设置LocalExecutor
12.2.3 设置CeleryExecutor
12.2.4 设置KubernetesExecutor
12.3 捕获所有Airflow进程的日志
12.3.1 捕获Web服务器输出
12.3.2 捕获调度器输出
12.3.3 捕获任务日志
12.3.4 将日志发送到远程存储
12.4 可视化及监控Airflow指标
12.4.1 从Airflow收集指标
12.4.2 配置Airflow以发送指标
12.4.3 配置Prometheus以收集指标
12.4.4 使用Grafana创建仪表板
12.4.5 应监控的指标
12.5 如何获得失败任务的通知
12.5.1 DAG和operator内的告警
12.5.2 定义服务级别协议(SLA)
12.6 可伸缩性与性能
12.6.1 控制最大运行任务数
12.6.2 系统性能配置
12.6.3 运行多个调度器
12.7 本章小结
第13章 Airflow安全性
13.1 保护Airflow Web界面
13.1.1 将用户添加到RBAC界面
13.1.2 配置RBAC界面
13.2 加密静态数据
13.3 连接LDAP服务
13.3.1 理解LDAP
13.3.2 从LDAP服务获取用户
13.4 加密与Web服务器的通信
13.4.1 了解HTTPS
13.4.2 为HTTPS配置证书
13.5 从认证管理系统获取凭证
13.6 本章小结
第14章 实战:探索游览纽约市的最快方式
14.1 理解数据
14.1.1 Yellow Cab文件共享
14.1.2 Citi Bike REST API
14.1.3 确定算法
14.2 提取数据
14.2.1 下载Citi Bike数据
14.2.2 下载Yellow Cab数据
14.3 对数据应用类似的转换
14.4 构建数据管道
14.5 开发幂等的数据管道
14.6 本章小结
第Ⅳ部分 在云端
第15章 Airflow在云端
15.1 设计云端部署策略
15.2 云端专用的hook和operator
15.3 托管服务
15.3.1 Astronomer.io
15.3.2 Google Cloud Composer
15.3.3 适用于Apache Airflow的Amazon托管工作流
15.4 选择部署策略
15.5 本章小结
第16章 在AWS中运行Airflow
16.1 在AWS中部署Airflow
16.1.1 选择云服务
16.1.2 设计网络
16.1.3 添加DAG同步
16.1.4 使用CeleryExecutor扩展
16.1.5 后续步骤
16.2 针对AWS的hook和operator
16.3 用例:使用AWS Athena进行无服务器的电影排名
16.3.1 用例概要
16.3.2 设置资源
16.3.3 创建DAG
16.3.4 环境清理
16.4 本章小结
第17章 在Azure中使用Airflow
17.1 在Azure中部署Airflow
17.1.1 选择服务
17.1.2 设计网络
17.1.3 使用CeleryExecutor扩展
17.1.4 后续步骤
17.2 针对Azure设计的hook和operator
17.3 示例:在Azure上运行无服务器的电影推荐程序
17.3.1 示例概要
17.3.2 设定资源
17.3.3 创建DAG
17.3.4 环境清理
17.4 本章小结
第18章 在GCP中运行Airflow
18.1 在GCP中部署Airflow
18.1.1 选择服务
18.1.2 使用Helm在GKE上部署Airflow
18.1.3 与Google服务集成
18.1.4 设计网络
18.1.5 通过CeleryExecutor扩展
18.2 针对GCP的hook和operator
18.3 用例:在GCP上运行无服务器的电影评级
18.3.1 上传到GCS
18.3.2 将数据导入BigQuery
18.3.3 提取最高评分
18.4 本章小结
附录A 运行示例代码
附录B Airflow 1和Airflow 2中的包结构
附录C Prometheus指标映射
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...