Flink入門與實戰

汪明

  • 出版商: 清華大學
  • 出版日期: 2021-08-01
  • 定價: $534
  • 售價: 7.5$401
  • 語言: 簡體中文
  • 頁數: 362
  • 裝訂: 平裝
  • ISBN: 7302583811
  • ISBN-13: 9787302583813
  • 相關分類: Java 程式語言大數據 Big-data
  • 立即出貨 (庫存 < 4)

  • Flink入門與實戰-preview-1
  • Flink入門與實戰-preview-2
  • Flink入門與實戰-preview-3
Flink入門與實戰-preview-1

買這商品的人也買了...

商品描述

Apache Flink是一個框架和分佈式處理引擎,用於對無界和有界數據流進行有狀態的計算,廣泛應用於大數據相關的實際業務場景中。本書是一本從零開始講解Flink的入門教材,學習本書需要有Java編程基礎。 本書共分10章,內容包括Flink開發環境搭建、Flink架構和原理、時間和窗口、狀態管理和容錯機制、數據類型與序列化、DataStream API和DataSet API、Table API和SQL、Flink並行、Flink部署與應用,最後以一個Flink實戰項目為例,對Flink相關知識進行綜合實踐,其中涉及Web頁面展示、WebSocket協議和Node.js服務等技術。 本書內容詳盡、示例豐富,適合作為Flink初學者必備的參考書,也非常適合作為高等院校和培訓機構大數據及相關專業的師生教學參考。

作者簡介

汪明,中國礦業大學碩士,徐州軟件協會副理事長,某創業公司合夥人。
從事軟件行業十餘年,發表論文數十篇。著有圖書《Python大數據處理庫PySpark實戰》《TypeScript實戰》《Go並發編程實戰》。

目錄大綱

目錄
第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.3.1  認證目標 341
9.3.2  認證配置 342
9.3.3  SSL配置 343
9.4  Flink集群升級 344
9.4.1  任務重啟 344
9.4.2  狀態維護 344
9.4.3  版本升級 344
9.5  本章小結 345

第10章  Flink項目實戰 346
10.1  實時數據清洗(實時ETL) 346
10.1.1  需求分析 346
10.1.2  項目架構設計 346
10.1.3  項目代碼實現 347
10.2  實時數據報表 357
10.2.1  需求分析 357
10.2.2  項目架構設計 357
10.2.3  項目代碼實現 357
10.3  本章小結 362