Flink入門與實戰(簡體書)
商品資訊
系列名:大數據技術叢書
ISBN13:9787302583813
出版社:清華大學出版社(大陸)
作者:汪明
出版日:2021/08/01
裝訂/頁數:平裝/362頁
規格:24cm*17cm (高/寬)
版次:一版
商品簡介
ApacheFlink是一個框架和分布式處理引擎,用於對無界和有界數據流進行有狀態的計算,廣泛應用於大數據相關的實際業務場景中。
《Flink入門與實戰/大數據技術叢書》是一本從零開始講解Flink的入門教材,學習《Flink入門與實戰/大數據技術叢書》需要有Java編程基礎。
《Flink入門與實戰/大數據技術叢書》共分10章,內容包括Flink開發環境搭建、Flink架構和原理、時間和窗口、狀態管理和容錯機制、數據類型與序列化、DataStreamAPI和DataSetAPI、TableAPI和SQL、Flink並行、Flink部署與應用,最後以一個Flink實戰項目為例,對Flink相關知識進行綜合實踐,其中涉及Web頁面展示、WebSocket協議和Node.js服務等技術。
《Flink入門與實戰/大數據技術叢書》內容詳盡、示例豐富,適合作為Flink初學者必備的參考書,也非常適合作為高等院校和培訓機構大數據及相關專業的師生教學參考。
《Flink入門與實戰/大數據技術叢書》針對Flink初學者,詳細介紹Flink架構、原理、大數據處理機制和處理方法,以及Flink並行、部署與集群等方面的知識,最後通過—個實戰項目來提高讀者解決實際問題的能力。
作者簡介
汪明,中國礦業大學碩士,徐州軟件協會副理事長,某創業公司合伙人。從事軟件行業十余年,發表論文數十篇。著有圖書《Python大數據處理庫PySpark實戰》《TypeScript實戰》《Go並發編程實戰》。
名人/編輯推薦
本書針對Flink初學者,詳細介紹Flink架構、原理、大數據處理機制和處理方法,以及Flink並行、部署與集群等方面的知識,最後通過一個實戰項目來提高讀者解決實際問題的能力。
序
前 言
隨著物聯網、5G以及大數據技術的發展,人類已經進入大數據時代,毫不夸張地說,未來IT相關的職位,一項必備技能就是大數據處理能力。當前,人類基於大數據和人工智能等技術,在特定領域中可以大大提升業務系統的智能化水平。
人類對於計算速度的追求從未停止,即使面對海量的數據,我們也希望大數據框架可以在非常低的延遲下進行響應,從而提升用戶的體驗。
主流的分布式大數據計算框架有Storm、Spark和Flink,由於阿裡對Flink的收購以及改進,目前Flink社區非常活躍,社區一直致力於統一流處理和批處理API,並逐步增強Flink SQL相關功能,即期望通過SQL來滿足大部分的大數據ETL處理場景。另外,隨著Flink SQL功能的增強和發展,也大大降低了Flink學習的難度。
目前,Flink在百度、阿裡、字節跳動、小米和騰訊等商業巨頭中有成熟的應用,每日可以處理萬億的事件,且可以維護TB級別的狀態信息。Flink支持多種編程語言,可以用Java、Scala以及Python進行大數據業務處理。與此同時,Flink支持靈活的窗口計算以及亂序數據處理,這相對於其他大數據計算框架來說,有比較強的優勢。
如果你對實時大數據處理感興趣,致力於構建分布式大數據處理應用程序,並且有一點Java編程基礎,那麼本書適合你。本書作為Flink的入門教材,由淺入深地對Flink大數據處理方法進行介紹,特別對常用的DataStream API和DataSet API、Table API 和SQL進行了詳細的說明,最後結合實戰項目,將各個知識點有機整合,做到理論聯繫實際。
本書涉及的技術和框架
本書涉及的技術和框架包括Flink、IntelliJ IDEA、Java、Kafka、jQuery、HTML5、Node.js、Maven。
本書特點
(1)理論聯繫實際。本書先對Flink基本的安裝過程進行說明,並對Flink分布式架構、內部數據處理過程等進行詳細分析,最後結合示例代碼進行說明,做到理論聯繫實際。
(2)深入淺出、輕鬆易學。本書以實例為主線,激發讀者的閱讀興趣,讓讀者能夠真正學習到Flink 最實用、最前沿的技術。
(3)技術新穎、與時俱進。本書結合當前最熱門的技術,如Node.js和HTML5等,讓讀者在學習Flink的同時,了解更多相關的先進技術。
(4)貼心提醒。本書根據需要在各章使用了很多“注意”小欄目,讓讀者可以在學習過程中更輕鬆地理解相關知識點及概念。
本書讀者
? 有一點Java編程基礎的初學者
? 大數據處理與分析人員
? 從事後端開發,對大數據開發有興趣的人員
? 想用Flink構建大數據應用的人員
? 想從事大數據技術工作的大中專院校學生
? Java開發和Java架構人員
? 大數據技術培訓機構的師生
作 者
2021年3月
目次
第1章 Flink環境搭建 1
1.1 下載安裝 1
1.1.1 什麼是Flink 1
1.1.2 Flink用戶 3
1.1.3 JDK安裝 4
1.1.4 Scala安裝 7
1.1.5 Python安裝 10
1.1.6 FinalShell安裝 12
1.2 配置與開發工具 15
1.2.1 基礎配置 15
1.2.2 IDEA開發工具 17
1.3 編譯 19
1.3.1 Scala項目模板 19
1.3.2 Java項目模板 24
1.3.3 Python項目 28
1.3.4 項目編譯 30
1.4 運行Flink應用 31
1.4.1 單機Standalone模式 31
1.4.2 多機Standalone模式 37
1.4.3 On Yarn集群模式 37
1.5 本章小結 38
第2章 定義、架構與原理 39
2.1 流處理的應用場景 39
2.1.1 數據預處理場景 40
2.1.2 預警場景 40
2.1.3 實時數量統計場景 40
2.1.4 數據庫交互場景 40
2.1.5 跟蹤場景 40
2.1.6 基於數據流的機器學習場景 41
2.1.7 實時自動控制場景 41
2.2 流處理的原理 41
2.2.1 流數據特徵 41
2.2.2 Dataflow模型 42
2.2.3 數據流圖 43
2.2.4 流處理操作 45
2.2.5 窗口操作 46
2.3 Flink架構分析 49
2.3.1 Flink常見概念 49
2.3.2 Flink主從架構 51
2.3.3 任務和算子鏈 52
2.4 Flink中的幾個語義——Streams、State、Time、API 53
2.4.1 Streams流 53
2.4.2 State狀態 54
2.4.3 Time時間 55
2.4.4 API接口 55
2.5 Flink組件 56
2.6 本章小結 57
第3章 時間和窗口 58
3.1 時間 58
3.1.1 Flink中的時間 58
3.1.2 時間的特性 60
3.2 Timestamp和Watermark 61
3.2.1 在SourceFunction中生成 61
3.2.2 在assignTimestampsAndWatermarks中生成 64
3.2.3 Watermarks傳播機制 83
3.3 EventTime+Watermark解決亂序數據 95
3.3.1 無遲到的亂序數據 96
3.3.2 有遲到的亂序數據 104
3.4 WindowAssigner、Evictor以及Trigger 109
3.4.1 WindowAssigner 111
3.4.2 Trigger 116
3.4.3 Evictor 122
3.5 Window內部實現 126
3.5.1 Flink Window源碼分析 126
3.5.2 Flink Window執行過程 130
3.6 Window使用 131
3.6.1 Time Window 131
3.6.2 Count Window 135
3.6.3 Session Window 138
3.6.4 自定義Window 140
3.7 Window聚合分類 144
3.7.1 增量聚合 144
3.7.2 全量聚合 146
3.8 本章小結 149
第4章 狀態管理及容錯機制 150
4.1 什麼是狀態 150
4.2 什麼場景會用到狀態 150
4.3 狀態的類型與使用 151
4.3.1 Keyed State托管狀態 152
4.3.2 Operator State托管狀態 159
4.4 Checkpoint機制 162
4.4.1 Checkpoint配置 163
4.4.2 State Backends狀態後端 164
4.4.3 重啟策略 165
4.5 SavePoint機制 169
4.6 本章小結 169
第5章 數據類型與序列化 170
5.1 Flink的數據類型 170
5.1.1 元組類型 171
5.1.2 Java POJOs類型 172
5.1.3 Scala樣例類 173
5.1.4 基礎類型 174
5.1.5 普通類 175
5.1.6 值類型 177
5.1.7 特殊類型 177
5.2 序列化原理 178
5.3 Flink的序列化過程 181
5.4 序列化的最佳實踐 186
5.5 本章小結 186
第6章 DataStream API和DataSet API 187
6.1 DataStream API 187
6.1.1 DataSources數據輸入 187
6.1.2 DataSteam轉換操作 195
6.1.3 DataSinks數據輸出 214
6.2 DataSet API 222
6.2.1 DataSources數據輸入 223
6.2.2 DataSet轉換操作 227
6.2.3 DataSinks數據輸出 235
6.3 迭代計算 238
6.3.1 全量迭代 239
6.3.2 增量迭代 240
6.4 廣播變量與分布式緩存 244
6.4.1 廣播變量 244
6.4.2 分布式緩存 246
6.5 語義注解 248
6.5.1 Forwarded Fileds注解 248
6.5.2 Non-Forwarded Fileds注解 249
6.5.3 Read Fields注解 250
6.6 本章小結 251
第7章 Table API和SQL 252
7.1 TableEnviroment 252
7.1.1 開發環境構建 253
7.1.2 TableEnvironment基本操作 254
7.1.3 外部連接器 257
7.1.4 時間概念 261
7.1.5 Temporal Tables時態表 263
7.2 WordCount 267
7.3 Table API的操作 268
7.3.1 獲取Table 268
7.3.2 輸出Table 272
7.3.3 查詢Table 275
7.3.4 聚合操作 277
7.3.5 多表關聯 278
7.3.6 集合操作 279
7.3.7 排序操作 281
7.4 DataStream、DataSet和Table之間的轉換 282
7.4.1 DataStream to Table 283
7.4.2 DataSet to Table 284
7.4.3 Table to DataStream 285
7.4.4 Table to DataSet 287
7.5 window aggregate與non-window aggregate 288
7.6 Flink SQL使用 297
7.6.1 使用SQL CLI客戶端 298
7.6.2 在流上運行SQL查詢 299
7.6.3 Group Windows窗口操作 300
7.6.4 多表關聯 306
7.6.5 集合操作 307
7.6.6 去重操作 308
7.6.7 Top-N操作 310
7.6.8 數據寫入 311
7.7 自定義函數 313
7.7.1 Scalar Function 313
7.7.2 Table Function 315
7.7.3 Aggregation Function 317
7.8 本章小結 319
第8章 並行 320
8.1 Flink並行度 320
8.2 TaskManager和Slot 321
8.3 並行度的設置 322
8.3.1 執行環境層面 322
8.3.2 操作算子層面 323
8.3.3 客戶端層面 324
8.3.4 系統層面 324
8.3.5 最大並行度 324
8.4 並行度案例分析 325
8.5 本章小結 329
第9章 Flink部署與應用 330
9.1 Flink集群部署 330
9.1.1 Standalone Cluster部署 330
9.1.2 Yarn Cluster部署 333
9.1.3 Kubernetes Cluster部署 334
9.2 Flink高可用配置 340
9.2.1 Standalone集群高可用配置 340
9.2.2 Yarn Session集群高可用配置 341
9.3 Flink安全管理 341
9.4 Flink集群升級 344
9.5 本章小結 345
第10章 Flink項目實戰 346
10.1 實時數據清洗(實時ETL) 346
10.2 實時數據報表 357
10.3 本章小結 362
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。