本書由淺入深地介紹了如何快速搭建Airflow集群,包括不同操作系統的快速搭建方法、Airflow的安裝方法、Airflow集群的部署方法、Airflow中的核心概念和其他重要概念、Airflow的架構和組件、Airflow的系統管理、實踐經驗以及其他常見的調度系統。附錄提供了Docker和Kubernetes的簡介。
1.掌握Airflow,開啟高效工作流新時代!揭示Airflow的奧秘,讓您輕松搭建和管理高效的工作流,實現業務目標!
2.走進Airflow的世界,掌握開源調度系統的核心!資深專家傾力打造,深入淺出地講解Airflow的安裝、部署、核心概念和架構組件,助您成為Airflow領域的佼佼者!
3.實戰經驗,讓您輕松駕馭Airflow!豐富的實踐經驗和技巧,助您在生產環境中游刃有余地使用Airflow,優化集群性能,排查問題,輕松應對各種挑戰!
朱鵬程,本科畢業于復旦大學軟件工程系,現于億貝軟件工程(上海)有限公司擔任高級軟件工程師,負責Hadoop平臺的支持和維護,同時負責開源調度系統Airflow在全公司的推廣和落地。精通Java語言,對HBase、Elasticsearch、Airflow等項目有深入了解。
第 1章 快速搭建Airflow集群 1
1.1 準備工作 1
1.1.1 安裝kubectl 1
1.1.2 安裝Docker和kind 5
1.1.3 安裝Helm 7
1.2 創建Kubernetes集群 8
1.3 使用Helm部署Airflow集群 8
1.4 運行示例 10
1.5 本章小結 11
第 2章 安裝Airflow 12
2.1 在非容器化環境中基于PyPI安裝Airflow 12
2.1.1 準備工作 12
2.1.2 安裝Airflow 13
2.1.3 升級Airflow 14
2.2 在容器化環境中擴展Airflow官方的鏡像 15
2.3 本章小結 15
第3章 部署Airflow集群 16
3.1 在非容器化生產環境中部署Airflow 16
3.1.1 基于Celery Executor的部署 16
3.1.2 基于Dask Executor的部署 23
3.2 在容器化生產環境中部署Airflow 28
3.2.1 基于Celery Executor的部署 28
3.2.2 基于Kubernetes Executor的部署 39
3.2.3 基于CeleryKubernetes Executor的部署 40
3.3 本章小結 41
第4章 DAG相關概念 42
4.1 DAG簡介 42
4.1.1 構造DAG 44
4.1.2 加載DAG 48
4.1.3 運行DAG 49
4.2 Task 50
4.2.1 Task的類型 51
4.2.2 TaskGroup 61
4.2.3 Task的超時處理 63
4.3 DAG Run和Task Instance 63
4.4 本章小結 70
第5章 其他概念 71
5.1 XCom 71
5.1.1 XCom的使用場景 71
5.1.2 如何使用XCom 71
5.2 Variable 73
5.2.1 通過Webserver UI配置Variable 74
5.2.2 通過環境變量配置Variable 75
5.2.3 通過其他方式配置Variable 76
5.3 Connection和Hook 76
5.3.1 基本概念 77
5.3.2 Connection的配置 77
5.3.3 Connection和Hook的使用 80
5.3.4 SSHHook源代碼分析 81
5.4 Pool 82
5.4.1 Pool的設置 82
5.4.2 Pool的使用 83
5.5 Priority Weight 84
5.6 Cluster Policy 84
5.6.1 Cluster Policy的使用場景和類型 85
5.6.2 具體示例 85
5.7 Deferrable Operator和Trigger 86
5.7.1 使用Deferrable Operator和Trigger 86
5.7.2 從源代碼分析Deferrable Operator和Trigger 87
5.8 本章小結 89
第6章 架構和組件 90
6.1 架構 90
6.2 Scheduler 91
6.2.1 解析DAG文件 91
6.2.2 調度DAG和Task 92
6.2.3 運行Task Instance 94
6.3 Webserver 97
6.3.1 UI 97
6.3.2 REST API 99
6.4 Triggerer 104
6.5 本章小結 104
第7章 系統管理 105
7.1 配置 105
7.1.1 如何管理配置 105
7.1.2 特殊的配置 107
7.1.3 配置的優先級 108
7.2 安全 108
7.2.1 訪問控制 109
7.2.2 API認證 111
7.2.3 Webserver UI安全 113
7.2.4 數據安全 114
7.3 日志和監控 115
7.3.1 日志和監控的架構 116
7.3.2 日志 116
7.3.3 監控 117
7.4 插件 118
7.4.1 插件的安裝和加載 118
7.4.2 如何實現插件 119
7.5 模塊管理 126
7.5.1 如何添加Python模塊 126
7.5.2 如何排查問題 126
7.6 CLI 127
7.6.1 全部命令 127
7.6.2 自動補齊 129
7.7 時區 130
7.7.1 datetime對象與時區 130
7.7.2 Airflow是如何處理時區的 130
7.7.3 Webserver UI的時區顯示 131
7.8 本章小結 132
第8章 Airflow集群實踐 133
8.1 Executor調優 133
8.1.1 Celery Executor 調優 134
8.1.2 Kubernetes Executor調優 141
8.1.3 Dask Executor調優 141
8.2 高可用 142
8.2.1 高可用的Scheduler 142
8.2.2 高可用的Webserver 143
8.2.3 高可用的Triggerer 143
8.3 魯棒的數據庫訪問 144
8.3.1 PostgreSQL優化 144
8.3.2 MySQL優化 144
8.3.3 數據庫通用優化 144
8.4 簡化DAG文件發布和解析 145
8.4.1 簡化DAG文件發布 145
8.4.2 通過配置控制DAG文件解析的行為 145
8.5 用插件擴展集群的能力 146
8.5.1 編寫插件 146
8.5.2 安裝插件 152
8.5.3 測試插件 152
8.6 加強REST API的能力 155
8.7 其他 158
8.7.1 讓集群更安全 158
8.7.2 監控必不可少 159
8.7.3 為DAG和Task添加說明文檔 159
8.7.4 配置郵件通知 160
8.7.5 控制調度的并發度 161
8.8 本章小結 162
第9章 Airflow的新功能 163
9.1 Airflow 2.3版本的新功能 163
9.1.1 動態Task映射 163
9.1.2 網格視圖 169
9.1.3 其他功能 173
9.2 Airflow 2.4版本的新功能 174
9.2.1 數據感知調度 174
9.2.2 其他功能 175
9.3 Airflow 2.5版本的新功能 175
9.4 本章小結 176
第 10章 其他調度系統 177
10.1 DolphinScheduler 177
10.1.1 DolphinScheduler的架構 177
10.1.2 DolphinScheduler的特點和優勢 179
10.1.3 DolphinScheduler與Airflow的對比 180
10.2 AWS Step Functions 180
10.2.1 AWS Step Functions的特點和優勢 181
10.2.2 AWS Step Functions與Airflow的對比 181
10.3 Google Workflows 181
10.3.1 Google Workflows的特點和優勢 182
10.3.2 Google Workflows與Airflow的對比 182
10.4 Azkaban 183
10.4.1 Azkaban的特點和優勢 183
10.4.2 Azkaban與Airflow的對比 184
10.5 Kubeflow 184
10.5.1 Kubeflow的特點和優勢 185
10.5.2 Kubeflow與Airflow的對比 185
10.6 本章小結 186
附錄A Docker簡介 187
附錄B Kubernetes簡介 197