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