Flink核心原理與實現

Flink核心原理與實現

《Flink核心原理與實現》是2020年機械工業出版社出版的圖書,作者是馮飛、崔鵬雲和陳冠華。本書既講解了Flink的入門、安裝、流計算開發入門、類型和序列化系統、監控運維、安全管理配置等基礎知識,又講解了Flink的時間概念、Window的實現原理及其代碼解析等深度內容。

基本介紹

  • 書名:Flink核心原理與實現
  • 作者:馮飛、陳冠華、崔鵬雲
  • 出版社:機械工業出版社
  • ISBN:9787111661894 
內容簡介,圖書目錄,作者簡介,

內容簡介

《Flink核心原理與實現》既講解了Flink的入門、安裝、流計算開發入門、類型和序列化系統、監控運維、安全管理配置等基礎知識,又講解了Flink的時間概念、Window的實現原理及其代碼解析,Flink的容錯機制原理,Flink容錯的關鍵設計、代碼實現分析,Flink Job從源碼到執行整個過程的解析,Flink Job的調度策略、資源管理策略、記憶體管理、數據交換的關鍵設計和代碼實現分析,Flink的RPC通信框架等深度內容。《Flink核心原理與實現》適合對實時計算感興趣的大數據開發、運維領域的從業人員閱讀,此外對機器學習工程技術人員也有所幫助。

圖書目錄

前言
第1章 Flink入門
1.1 核心特點
1.1.1 批流一體
1.1.2 可靠的容錯能力
1.1.3 高吞吐、低延遲
1.1.4 大規模複雜計算
1.1.5 多平台部署
1.2 架構
1.2.1 技術架構
1.2.2 運行架構
1.3 Flink的未來
1.4 準備工作
1.5 總結
第2章 Flink套用
2.1 Flink套用開發
2.2 API層次
2.3 數據流
2.4 數據流API
2.4.1 數據讀取
2.4.2 處理數據
2.4.3 數據寫出
2.4.4 旁路輸出
2.5 總結
第3章 核心抽象
3.1 環境對象
3.1.1 執行環境
3.1.2 運行時環境
3.1.3 運行時上下文
3.2 數據流元素
3.3 數據轉換
3.4 運算元
3.4.1 運算元行為
3.4.2 Flink運算元
3.4.3 Blink運算元
3.4.4 異步運算元
3.5 函式體系
3.5.1 函式層次
3.5.2 處理函式
3.5.3 廣播函式
3.5.4 異步函式
3.5.5 數據源函式
3.5.6 輸出函式
3.5.7 檢查點函式
3.6 數據分區
3.7 連線器
3.8 分散式ID
3.9 總結
第4章 時間與視窗
4.1 時間類型
4.2 視窗類型
4.3 視窗原理與機制
4.3.1 WindowAssigner
4.3.2 WindowTrigger
4.3.3 WindowEvictor
4.3.4 Window函式
4.4 水印
4.4.1 DataStream Watermark生成
4.4.2 Flink SQL Watermark生成
4.4.3 多流的Watermark
4.5 時間服務
4.5.1 定時器服務
4.5.2 定時器
4.5.3 優先權佇列
4.6 視窗實現
4.6.1 時間視窗
4.6.2 會話視窗
4.6.3 計數視窗
4.7 總結
第5章 類型與序列化
5.1 DataStream類型系統
5.1.1 物理類型
5.1.2 邏輯類型
5.1.3 類型推斷
5.1.4 顯式類型
5.1.5 類型系統存在的問題
5.2 SQL類型系統
5.2.1 Flink Row
5.2.2 Blink Row
5.2.3 ColumnarRow
5.3 數據序列化
5.3.1 數據序列化/反序列化
5.3.2 String序列化過程示例
5.3.3 作業序列化
5.3.4 Kryo序列化
5.4 總結
第6章 記憶體管理
6.1 自主記憶體管理
6.2 記憶體模型
6.2.1 記憶體布局
6.2.2 記憶體計算
6.3 記憶體數據結構
6.3.1 記憶體段
6.3.2 記憶體頁
6.3.3 Buffer
6.3.4 Buffer資源池
6.4 記憶體管理器
6.4.1 記憶體申請
6.4.2 記憶體釋放
6.5 網路緩衝器
6.5.1 記憶體申請
6.5.2 記憶體回收
6.6 總結
第7章 狀態原理
7.1 狀態類型
7.1.1 KeyedState與OperatorState
7.1.2 原始和託管狀態
7.2 狀態描述
7.3 廣播狀態
7.4 狀態接口
7.4.1 狀態操作接口
7.4.2 狀態訪問接口
7.5 狀態存儲
7.5.1 記憶體型和檔案型狀態存儲
7.5.2 基於RocksDB的StateBackend
7.6 狀態持久化
7.7 狀態重分布
7.7.1 OperatorState重分布
7.7.2 KeyedState重分布
7.8 狀態過期
7.8.1 DataStream中狀態過期
7.8.2 Flink SQL中狀態過期
7.8.3 狀態過期清理
7.9 總結
第8章 作業提交
8.1 提交流程
8.1.1 流水線執行器PipelineExecutor
8.1.2 Yarn Session提交流程
8.1.3 Yarn Per-Job提交流程
8.1.4 K8s Session提交流程
8.2 Graph總覽
8.3 流圖
8.3.1 StreamGraph核心對象
8.3.2 StreamGraph生成過程
8.3.3 單輸入物理Transformation的轉換示例
8.3.4 虛擬Transformation的轉換示例
8.4 作業圖
8.4.1 JobGraph核心對象
8.4.2 JobGraph生成過程
8.4.3 運算元融合
8.5 執行圖
8.5.1 ExecutionGraph核心對象
8.5.2 ExecutionGraph生成過程
8.6 總結
第9章 資源管理
9.1 資源抽象
9.2 資源管理器
9.3 Slot管理器
9.4 SlotProvider
9.5 Slot選擇策略
9.6 Slot資源池
9.7 Slot共享
9.8 總結
第10章 作業調度
10.1 調度
10.2 執行模式
10.3 數據交換模式
10.4 作業生命周期
10.4.1 作業生命周期狀態
10.4.2 Task的生命周期
10.5 關鍵組件
10.5.1 JobMaster
10.5.2 TaskManager
10.5.3 Task
10.5.4 StreamTask
10.6 作業啟動
10.6.1 JobMaster啟動作業
10.6.2 流作業啟動調度
10.6.3 批作業調度
10.6.4 TaskManger啟動Task
10.7 作業停止
10.8 作業失敗調度
10.8.1 默認作業失敗調度
10.8.2 遺留的作業失敗調度
10.9 組件容錯
10.9.1 容錯設計
10.9.2 HA服務
10.9.3 JobMaster的容錯
10.9.4 ResourceManager容錯
10.9.5 TaskManager 的容錯
10.10 總結
第11章 作業執行
11.1 作業執行圖
11.2 核心對象
11.2.1 輸入處理器
11.2.2 Task輸入
11.2.3 Task輸出
11.2.4 結果分區
11.2.5 結果子分區
11.2.6 有限數據集
11.2.7 輸入網關
11.2.8 輸入通道
11.3 Task執行
11.3.1 Task處理數據
11.3.2 Task處理Watermark
11.3.3 Task處理StreamStatus
11.3.4 Task處理LatencyMarker
11.4 總結
第12章 數據交換
12.1 數據傳遞模式
12.2 關鍵組件
12.2.1 RecordWriter
12.2.2 數據記錄序列化器
12.2.3 數據記錄反序列化器
12.2.4 結果子分區視圖
12.2.5 數據輸出
12.3 數據傳遞
12.3.1 本地執行緒內的數據傳遞
12.3.2 本地執行緒間的數據傳遞
12.3.3 跨網路的數據傳遞
12.4 數據傳遞過程
12.4.1 數據讀取
12.4.2 數據寫出
12.4.3 數據清理
12.5 網路通信
12.5.1 網路連線
12.5.2 無流控
12.5.3 基於信用的流控
12.6 總結
第13章 套用容錯
13.1 容錯保證語義
13.2 檢查點與保存點
13.3 作業恢復
13.3.1 檢查點恢復
13.3.2 保存點恢復
13.3.3 恢復時的時間問題
13.4 關鍵組件
13.4.1 檢查點協調器
13.4.2 檢查點訊息
13.5 輕量級異步分散式快照
13.5.1 基本概念
13.5.2 Barrier對齊
13.6 檢查點執行過程
13.6.1 JobMaster觸發檢查點
13.6.2 TaskExecutor執行檢查點
13.6.3 JobMaster確認檢查點
13.7 檢查點恢復過程
13.8 端到端嚴格一次
13.8.1 兩階段提交協定
13.8.2 兩階段提交實現
13.9 總結
第14章 Flink SQL
14.1 Apache Calcite
14.1.1 Calcite是什麼
14.1.2 Calcite的技術特點
14.1.3 Calcite的主要功能
14.1.4 Calcite的核心原理
14.2 動態表
14.2.1 流映射為表
14.2.2 連續查詢
14.2.3 流上SQL查詢限制
14.2.4 表到流的轉換
14.3 TableEnvironment
14.3.1 TableEnvironment體系
14.3.2 TableEnvironment使用示例
14.4 Table API
14.5 SQL API
14.6 元數據
14.6.1 元數據管理
14.6.2 元數據分類
14.7數據訪問
14.7.1Table Source
14.7.2Table Slink
14.8 SQL函式
14.9 Planner關鍵抽象
14.9.1 Expression
14.9.2 ExpressionResolver
14.9.3 Operation
14.9.4 QueryOperation
14.9.5 物理計畫節點
14.10 Blink Planner和Flink Planner對比
14.11 Blink與Calcite關係
14.12 Blink SQL執行過程
14.12.1 從SQL到Operation
14.12.2 Operation到Transformation
14.13 Blink Table API執行過程
14.13.1 Table API到Operation
14.13.2 Operation到Transformation
14.14 Flink與Calcite的關係
14.15 Flink SQL執行過程
14.15.1 SQL 到Operation
14.15.2 Operation到DataStream/DataSet
14.16 Flink Table API執行過程
14.17 SQL最佳化
14.18 Blink最佳化
14.18.1 最佳化器
14.18.2 代價計算
14.18.3 最佳化過程
14.18.4 最佳化規則
14.18.5 公共子圖
14.19 Flink最佳化
14.19.1 最佳化器
14.19.2 最佳化過程
14.19.3 最佳化規則
14.20 代碼生成
14.20.1 為什麼進行代碼生成
14.20.2 代碼生成範圍
14.20.3 代碼生成示例
14.21 總結
第15章 運維監控
15.1 監控指標
15.2 指標組
15.3 監控集成
15.4 指標註冊中心
15.5 指標查詢服務
15.6 延遲跟蹤實現原理
15.7 總結
第16章 RPC框架
16.1 Akka簡介
16.1.1 Akka是什麼
16.1.2 使用Akka
16.1.3 Akka的通信
16.2 RPC訊息的類型
16.3 RPC通信組件
16.3.1 RpcGateway
16.3.2 RpcEndpoint
16.3.3 RpcService
16.3.4 RpcServer
16.3.5 AkkaRpcActor
16.4 RPC互動過程
16.4.1 RPC請求傳送
16.4.2 RPC請求回響
16.5總結
專家寄語
參考文獻

作者簡介

1. 馮飛,有 10餘年IT研發經驗,專注於大數據相關技術領域,持續跟蹤研究大數據計算引擎的理論模型及其演進,深入研讀Flink、Apache Beam、Spark等的源碼,尤其精通Flink。目前從事批流AI融合的新一代數據倉庫設計、研發等工作。
2. 崔鵬雲,畢業於北京郵電大學,獲碩士學位,曾在MicroSoft和Teradata國外知名企業的研發中心供職9年,有15年的企業級海量數據離線和線上分析技術套用實戰經驗,擁有國內外眾多TB及PB級大數據客戶實時數據處理和分析落地能力。
3. 陳冠華,畢業於北京大學計算機軟體與理論專業,獲博士學位。2009~2011年在北京大學從事博士後研究工作,研究領域包括大數據記憶體及實時計算技術、數據倉庫、數據挖掘和機器學習等,有超過15年的海量數據離線和線上處理技術的學術研究與實踐經驗。

相關詞條

熱門詞條

聯絡我們