Flink技術內幕:架構設計與實現原理

羅江宇//趙士傑//李涵淼//閔文俊

  • 出版商: 機械工業
  • 出版日期: 2021-12-14
  • 定價: $594
  • 售價: 7.5$446
  • 語言: 簡體中文
  • 頁數: 327
  • 裝訂: 平裝
  • ISBN: 7111696298
  • ISBN-13: 9787111696292
  • 相關分類: 大數據 Big-data
  • 立即出貨

商品描述

這是一部從源代碼角度出發,
通過分析Flink的各個功能模塊的實現來剖析Flink的架構設計和實現原理的著作。
它將能指導讀者更好地對Flink進行性能調優、可用性保障、效能優化和二次開發。
四位作者都是非常資深的Flink專家,部分作者是Flink源代碼的維護者和改造者,
本書總結了他們在、螞蟻集團、滴滴等企業的大規模Flink實踐經驗。
全書共11章,主要內容如下。
第1章 閱讀Flink源代碼前的準備
主要介紹了Flink源代碼的獲取、編譯、調試,以及它的目錄結構、設計理念和基本架構。
此外,還分析了Flink與Hadoop MapReduce、Spark在設計上的差異。
第2~8章 Flink功能模塊源代碼和架構解析
從源碼角度分析了Flink的編程模型與API、運行時組件與通信、狀態管理與容錯、
任務提交與執行、Flink網絡棧、Flink Connector、部署模式等功能模塊的原理。
力求讓讀者深入理解Flink的原理,而不只是跟著本書讀一遍Flink源代碼。
原理和思想是不局限於某一個框架和技術,
了解了Flink的原理和思想,可以將其擴展到其他框架和技術上。
第9~10章 Flink Table、SQL與Flink CEP
編程方式逐漸從原先基於Map-Reduce的任務模式向SQL化演進,SQL意味著標準和效率。
這兩章重點講解了StreamTableEnvironment的實現過程、
SQL的解析過程、Table Connector以及Flink CEP的內部實現原理。
第11章 Flink監控
主要講解了Flink的監控指標、常用系統指標和監控體系的建設,
以及常用的定位手段。

作者簡介

羅江宇
Flink技術專家,先後就職於新浪微博、滴滴和某大型電商公司。
先後主導或參與了多家公司的Flink實時計算服務的構建、
對超大規模集群的維護以及Flink引擎的改造。
擁有豐富的實時計算實戰經驗,目前專注於Kubernetes調度、
Flink SQL及Flink流批一體化方向。

趙士傑
資深大數據技術專家,曾就職於滴滴、等一線互聯網公司。
從0到1深度參與了滴滴的大數據建設,
擁有非常豐富的大數據平台一線建設經驗,
對於大數據領域的計算和存儲引擎也有深入研究。

李涵淼
大數據研發專家,曾任滴滴大數據開發工程師。
從事大數據領域工作多年,參與過多家公司流計算平台的設計與研發,
目前專注於批流一體、OLAP技術方向的研究與應用。

閔文俊
螞蟻集團技術專家、開源大數據社區愛好者、Flink Contributor,
在實時計算領域工作多年,深度參與了滴滴、螞蟻集團的實時計算平台建設。

目錄大綱

前 言
第1章 閱讀Flink源代碼前的準備 1
1.1 環境準備 1
1.2 獲取、編譯和調試Flink的源代碼 4
1.2.1 獲取與導入Flink源代碼 4
1.2.2 編譯與調試Flink源代碼 6
1.3 Flink源代碼的目錄結構 9
1.4 Flink設計理念與基本架構 11
1.4.1 Flink與主流計算引擎對比 11
1.4.2 Flink基本架構 14
1.5 本章小結 17

第2章 編程模型與API 18
2.1 DataStream 18
2.2 算子 21
2.3 窗口 28
2.3.1 窗口的基本概念 28
2.3.2 窗口的執行流程 30
2.3.3 窗口分配器 32
2.3.4 觸發器 37
2.3.5 窗口函數 41
2.4 本章小結 43

第3章 運行時組件與通信 44
3.1 運行時組件 44
3.1.1 REST 45
3.1.2 Dispatcher 54
3.1.3 ResourceManager 61
3.1.4 JobMaster 75
3.1.5 TaskExecutor 85
3.2 組件間通信 95
3.2.1 Akka與Actor模型 95
3.2.2 組件間通信實現 99
3.3 運行時組件的高可用 117
3.3.1 Master節點上組件的高可用 117
3.3.2 現有運行時組件高可用存在的問題及其解決方案 126
3.4 本章小結 128

第4章 狀態管理與容錯 129
4.1 狀態 129
4.1.1 狀態的原理與實現 129
4.1.2 狀態生存時間的原理與實現 134
4.2 檢查點 137
4.2.1 檢查點機制原理 137
4.2.2 檢查點執行過程 137
4.2.3 任務容錯 140
4.3 狀態後端 143
4.4 本章小結 148

第5章 任務提交與執行 149
5.1 任務提交整體流程 149
5.2 DAG轉換 152
5.2.1 DAG的4層轉換 152
5.2.2 WordCount轉換過程 152
5.3 Slot分配 160
5.3.1 相關概念和實現類 160
5.3.2 Slot申請流程 162
5.3.3 任務部署 168
5.4 任務執行機制 170
5.4.1 任務執行過程 170
5.4.2 MailBox線程模型 174
5.5 本章小結 177

第6章 Flink網絡棧 178
6.1 內存管理 178
6.2 網絡傳輸 182
6.2.1 什麼是Flink網絡棧 182
6.2.2 非流控模型的網絡傳輸流程 184
6.2.3 流控模型的網絡傳輸流程 197
6.3 流批一體的shuffle架構 199
6.3.1 生命週期管理 199
6.3.2 數據shuffle 207
6.4 本章小結 208

第7章 Flink Connector的設計與實現 209
7.1 Kafka Connector實現原理 209
7.1.1 Kafka Source Connector實現 209
7.1.2 Kafka Sink Connector 實現 216
7.2 HBase Table Connector 實現原理 220
7.2.1 HBase Source Connector和Sink Connector的工廠實現 221
7.2.2 HBase維表實現 222
7.3 本章小結 224

第8章 部署模式 225
8.1 Local部署 225
8.2 Standalone部署 228
8.3 Flink on YARN模式 240
8.3.1 YARN基本架構 240
8.3.2 Flink on YARN模式介紹 241
8.3.3 Flink on YARN啟動過程 243
8.4 Flinkon Kubernetes模式 260
8.5 本章小結 265

第9章 Flink Table與SQL 266
9.1 StreamTableEnvironment類介紹 266
9.1.1 StreamExecution-Environment類 267
9.1.2 EnvironmentSettings類 267
9.1.3 TableConfig類 268
9.1.4 StreamTableEnvironment的創建過程 269
9.2 SQL解析過程 270
9.2.1 SQL解析 270
9.2.2 SQL優化 277
9.2.3 RelNode轉換 279
9.3 Table Connector 281
9.3.1 TableSource 282
9.3.2 TableSink 286
9.3.3 SPI機制在Table Connector中的應用 288
9.4 UDF與內置算子 292
9.4.1 UDF 292
9.4.2 內置算子 294
9.5 本章小結 297

第10章 Flink CEP 原理解析 298
10.1 CEP的基本概念 298
10.1.1 什麼是Flink CEP 298
10.1.2 Pattern 298
10.1.3 量詞 300
10.1.4 條件 301
10.1.5 連接 302
10.1.6 Flink CEP作業編寫舉例 302
10.2 CEP內部實現原理 304
10.2.1 NFA簡介 305
10.2.2 匹配過程 305
10.2.3 CEP狀態存儲 310
10.2.4 CEP和SQL結合 313
10.3 本章小結 315

第11章 Flink監控 316
11.1 監控指標 316
11.1.1 指標類型 316
11.1.2 系統指標及自定義指標 318
11.1.3 指標的使用 319
11.2 常用系統指標 322
11.3 監控體系建設 324
11.3.1 指標監控及展示 324
11.3.2 日誌分析處理 326
11.3.3 定位手段 326
11.4 本章小結 327