《深入理解Flink核心設計與實踐原理》是2020年11月電子工業出版社出版的圖書,作者為劉洋。本書深入分析Flink實現原理,配套完整隨書原始碼,便於讀者實戰。
基本介紹
- 書名:深入理解Flink核心設計與實踐原理
- 作者:劉洋
- 出版社:電子工業出版社
- 出版時間:2020年11月
- 頁數:488 頁
- 定價:138.00 元
- 開本:16 開
- ISBN:9787121399114
內容簡介,圖書目錄,作者簡介,
內容簡介
《深入理解Flink核心設計與實踐原理》從Apache Flink的緣起開始,由淺入深,理論結合實踐,全方位地介紹Apache Flink這一處理海量數據集的高性能工具。本書圍繞部署、流處理、批處理、TableAPI&SQL四大模組進行講解,並詳細說明ApacheFlink的每個特性的實際業務背景,使讀者不僅能編寫可運行的Apache Flink程式代碼,還能深刻理解並正確地將其運用到合適的生產業務環境中。
雖然本書是以Apache Flink技術框架來講解流計算技術的,但是流計算領域開發所面臨的各種問題同樣是Java後端開發者在進行服務端開發時所要面臨的,如有狀態計算、ExactlyOnce語義等。因此,ApacheFlink框架為解決這些問題而設計的方案同樣值得Java後端開發者借鑑。
本書適合初級和中級軟體工程師閱讀,未接觸過流計算領域的Java開發者也可以從本書中獲益。針對初學者,本書提供Windows環境搭建的演示,使不具備Linux系統操作經驗的讀者也可以快速學習Apache Flink。
圖書目錄
第1章 Apache Flink介紹
1.1 Apache Flink簡介
1.1.1 Apache Flink是什麼
1.1.2 Apache Flink套用場景
1.2 酷禁剃邀Apache Flink組件
1.2.1 分層API
1.2.2 作業管理器、任務管理器、客戶端
第2章 Apache Flink的安裝與部署
2.1 本地模式
2.1.1 安裝JDK
2.1.2 下載並安裝Flink
2.1.3 本地模式集群
2.1.4 Windows系統部署
2.2 Standalone模式
2.2.1 配置集群免密登錄
2.2.2 部署Standalone模式的集群
2.3 YARN模式
2.3.1 在YARN集群中啟動一個長期運行的Flink集群
2.3.2 在YARN集群中運行Flink作業
2.3.3 Flink和YARN的互動方式
2.3.4 問題匯總
2.4 Flink集群高可用
2.4.1 Standalone模式下JobManager的高可用
2.4.2 YARN模式下JobManager的高可用
第3章 Apache Flink的基礎概念和通用API
3.1 基礎概念
3.1.1 數據集和數據流
3.1.2 Flink程式的組成
3.1.3 延遲計算
3.1.4 指定分組數據集合的鍵
3.1.5 指定轉換函式
3.1.6 支持的數據類型
3.2 Flink程式模型
3.2.1 程式和數據流
3.2.2 並行數據流
3.2.3 視窗
3.2.4 時間
3.2.5 有狀態計算
3.2.6 容錯檢查點
3.2.7 狀態後端
3.2.8 保存點
3.3 Flink程式的分散式執行模型
3.3.1 任務和任務鏈
3.3.2 任務槽和資源
3.4 Java的Lambda表達式
3.4.1 類型擦除
3.4.2 類型提示
第4章 流處理基礎操作
4.1 DataStream的基本概念
4.1.1 流處理示例程式
4.1.2 數據源
4.1.3 數據流的轉換操作
4.1.4 數據接收器
4.2 數據流基本操作
4.2.1 Map
4.2.2 FlatMap
4.2.3 Filter
4.2.4 KeyBy
4.2.5 Reduce
4.2.6 Aggregations
4.2.7 Split和Select
4.2.8 Project
4.2.9 Union
4.2.10 Connect和CoMap、CoFlatMap
4.2.11 Iterate
4.3 富函式
4.3.1 基櫃淚狼本概念
4.3.2 代碼演示
4.4 任務鏈和資源組
4.4.1 默認連結
4.4.2 開啟新連結殃櫻台滲
4.4.3 禁用連結
4.4.4 設定任務槽共享組
4.5 物理分區
4.5.1 自定義分區策略
4.5.2 shuffle分區策略
4.5.3 broadcast分區策略
4.5.4 rebalance分區寒立台策略
4.5.5 rescale分區策略
4.5.6 forward分區策略
4.5.7 global分區策略
4.6 流處理的本糠舉主地測試
4.6.1 本地執行環境
4.6.2 集合支持的數據源和數據元煉糠接收器
4.6.3 單元測試
4.6.4 集成測試
4.7 分散式快取
4.7.1 註冊分散式快取檔案
4.7.2 訪問分散式快取檔案
4.7.3 BLOB服務兆民的配置參數
4.7.4 部署到集群中運行
4.8 將參數傳遞給函式
4.8.1 通過構造函式傳遞參數
4.8.2 使用ExecutionConfig傳遞參數
4.8.3 將命令行參數傳遞給函式
第5章 流處理中的狀態和容錯
5.1 有狀態計算
5.1.1 Operator狀態和Keyed狀態
5.1.2 託管的Keyed狀態
5.1.3 託管的Operator狀態
5.2 檢查點機制
5.2.1 先決條件
5.2.2 啟用和配置檢查點機制
5.2.3 目錄結構
5.2.4 其他相關的配置選項
5.3 狀態後端
5.3.1 MemoryStateBackend
5.3.2 FsStateBackend
5.3.3 RocksDBStateBackend
5.3.4 配置狀態後端
5.4 保存點機制
5.4.1 分配操作符id
5.4.2 保存點映射
5.4.3 保存點操作
5.4.4 保存點配置
5.5 廣播狀態
5.5.1 前置條件
5.5.2 廣播函式
5.5.3 代碼實現
5.6 調優檢查點和大狀態
5.6.1 監視狀態和檢查點
5.6.2 調優檢查點
5.6.3 使用異步檢查點操作
5.6.4 調優RocksDB
5.6.5 容量規劃
5.6.6 壓縮
第6章 流處理高級操作
6.1 視窗
6.1.1 視窗的基本概念
6.1.2 視窗分配器
6.1.3 視窗函式
6.1.4 視窗觸發器
6.1.5 視窗剔除器
6.1.6 允許數據延遲
6.1.7 視窗的快速實現方法
6.1.8 查看視窗使用組件
6.2 時間
6.2.1 時間語義
6.2.2 事件時間與水印
6.2.3 設定時間特性
6.3 數據流的連線操作
6.3.1 視窗Join
6.3.2 視窗CoGroup
6.3.3 間隔Join
6.4 側端輸出
6.4.1 基於複製數據流的方案
6.4.2 基於Split和Select的方案
6.4.3 基於側端輸出的方案
6.5 ProcessFunction
6.5.1 基本概念
6.5.2 計時器
6.6 自定義數據源函式
6.6.1 SourceFunction接口
6.6.2 ParallelSourceFunction接口
6.6.3 RichParallelSourceFunction抽象類
6.6.4 具備檢查點特性的數據源函式
6.7 自定義數據接收器函式
6.7.1 SinkFunction接口
6.7.2 RichSinkFunction抽象類
6.8 數據流連線器
6.8.1 內置連線器
6.8.2 數據源和數據接收器的容錯保證
6.8.3 Kafka連線器
6.8.4 安裝Kafka的注意事項
6.8.5 Kafka 1.0.0+ 連線器
6.8.6 Kafka消費者
6.8.7 Kafka生產者
6.8.8 Kafka連線器指標
第7章 批處理基礎操作
7.1 DataSet的基本概念
7.1.1 批處理示例程式
7.1.2 數據源
7.1.3 數據接收器
7.2 數據集的基本操作
7.2.1 Map
7.2.2 FlatMap
7.2.3 MapPartition
7.2.4 Filter
7.2.5 Project
7.2.6 Union
7.2.7 Distinct
7.2.8 GroupBy
7.2.9 Reduce
7.2.10 ReduceGroup
7.2.11 Aggregate
7.2.12 Join
7.2.13 OuterJoin
7.2.14 Cross
7.2.15 CoGroup
7.3 將參數傳遞給函式
7.4 廣播變數
7.4.1 註冊廣播變數
7.4.2 訪問廣播變數
7.4.3 代碼實現
7.5 物理分區
7.5.1 Rebalance
7.5.2 PartitionByHash
7.5.3 PartitionByRange
7.5.4 SortPartition
7.6 批處理的本地測試
7.6.1 本地執行環境
7.6.2 集合支持的數據源和數據接收器
第8章 Table API和SQL
8.1 基礎概念和通用API
8.1.1 添加依賴
8.1.2 第一個Hello World表程式
8.1.3 表程式的公共結構
8.1.4 創建一個TableEnvironment
8.1.5 在目錄中註冊表
8.1.6 查詢一個表
8.1.7 DataStream和DataSet API的集成
8.1.8 數據類型到表模式的映射
8.1.9 查詢最佳化
8.2 SQL
8.2.1 指定一個查詢
8.2.2 SQL支持的語法
8.2.3 SQL操作
8.2.4 數據類型
8.2.5 保留關鍵字
8.3 Table API
8.4 自定義函式
8.4.1 標量函式
8.4.2 表函式
8.4.3 聚合函式
8.4.4 自定義函式與運行環境集成
8.5 SQL客戶端
8.5.1 啟動SQL客戶端
8.5.2 配置參數
8.5.3 分離的SQL查詢
8.5.4 SQL客戶端中的視圖
8.5.5 SQL客戶端中的時態表
第9章 流處理中的Table API和SQL
9.1 動態表
9.1.1 動態表和連續查詢
9.1.2 在數據流中定義動態表
9.1.3 動態表到數據流的轉換
9.2 時間屬性
9.2.1 基本概念
9.2.2 組視窗
9.2.3 處理時間
9.2.4 事件時間
9.3 動態表的Join
9.3.1 常規Join
9.3.2 時間視窗Join
9.4 時態表
9.4.1 需求背景
9.4.2 時態表函式
9.5 查詢配置
9.5.1 查詢配置對象
9.5.2 空閒狀態保留時間
9.6 連線外部系統
9.6.1 概述
9.6.2 表模式
9.6.3 更新模式
9.6.4 表格式
9.6.5 表連線器
9.6.6 未統一的TableSources和TableSinks
第10章 執行管理
10.1 執行參數
10.1.1 在ExecutionEnvironment中設定參數
10.1.2 在ExecutionConfig中設定參數
10.2 並行執行
10.2.1 操作符級別
10.2.2 執行環境級別
10.2.3 客戶端級別
10.2.4 系統級別
10.2.5 設定最大並行度
10.3 重啟策略
10.3.1 固定延遲重啟策略
10.3.2 故障率重啟策略
10.3.3 沒有重新啟動策略
10.3.4 回退重啟策略
10.4 程式打包和部署
10.4.1 打包Flink程式
10.4.2 Web UI(Web管控台)提交
10.4.3 命令行客戶端提交
10.5 命令行接口
10.5.1 將Flink程式提交到Flink集群
10.5.2 列出集群中的作業
10.5.3 調整集群中的作業
10.5.4 保存點操作命令
10.6 執行計畫
10.6.1 線上可視化工具
10.6.2 Web管控台可視化
作者簡介
劉洋
國家認證軟體設計師,獲得Apache Kylin管理員認證。
現任某上市諮詢公司高級諮詢顧問,有多年大數據、流式計算方面的開發經驗,對Hadoop、Strom、Flink等大數據計算引擎有著非常深入的理解,積累了豐富的項目實踐經驗。先後利用相關技術為銀行、保險、能源等領域的頭部企業解決業務痛點。
個人技術部落格:www.cnblogs.com/intsmaze
個人Github項目:github.com/intsmaze
3.2.4 時間
3.2.5 有狀態計算
3.2.6 容錯檢查點
3.2.7 狀態後端
3.2.8 保存點
3.3 Flink程式的分散式執行模型
3.3.1 任務和任務鏈
3.3.2 任務槽和資源
3.4 Java的Lambda表達式
3.4.1 類型擦除
3.4.2 類型提示
第4章 流處理基礎操作
4.1 DataStream的基本概念
4.1.1 流處理示例程式
4.1.2 數據源
4.1.3 數據流的轉換操作
4.1.4 數據接收器
4.2 數據流基本操作
4.2.1 Map
4.2.2 FlatMap
4.2.3 Filter
4.2.4 KeyBy
4.2.5 Reduce
4.2.6 Aggregations
4.2.7 Split和Select
4.2.8 Project
4.2.9 Union
4.2.10 Connect和CoMap、CoFlatMap
4.2.11 Iterate
4.3 富函式
4.3.1 基本概念
4.3.2 代碼演示
4.4 任務鏈和資源組
4.4.1 默認連結
4.4.2 開啟新連結
4.4.3 禁用連結
4.4.4 設定任務槽共享組
4.5 物理分區
4.5.1 自定義分區策略
4.5.2 shuffle分區策略
4.5.3 broadcast分區策略
4.5.4 rebalance分區策略
4.5.5 rescale分區策略
4.5.6 forward分區策略
4.5.7 global分區策略
4.6 流處理的本地測試
4.6.1 本地執行環境
4.6.2 集合支持的數據源和數據接收器
4.6.3 單元測試
4.6.4 集成測試
4.7 分散式快取
4.7.1 註冊分散式快取檔案
4.7.2 訪問分散式快取檔案
4.7.3 BLOB服務的配置參數
4.7.4 部署到集群中運行
4.8 將參數傳遞給函式
4.8.1 通過構造函式傳遞參數
4.8.2 使用ExecutionConfig傳遞參數
4.8.3 將命令行參數傳遞給函式
第5章 流處理中的狀態和容錯
5.1 有狀態計算
5.1.1 Operator狀態和Keyed狀態
5.1.2 託管的Keyed狀態
5.1.3 託管的Operator狀態
5.2 檢查點機制
5.2.1 先決條件
5.2.2 啟用和配置檢查點機制
5.2.3 目錄結構
5.2.4 其他相關的配置選項
5.3 狀態後端
5.3.1 MemoryStateBackend
5.3.2 FsStateBackend
5.3.3 RocksDBStateBackend
5.3.4 配置狀態後端
5.4 保存點機制
5.4.1 分配操作符id
5.4.2 保存點映射
5.4.3 保存點操作
5.4.4 保存點配置
5.5 廣播狀態
5.5.1 前置條件
5.5.2 廣播函式
5.5.3 代碼實現
5.6 調優檢查點和大狀態
5.6.1 監視狀態和檢查點
5.6.2 調優檢查點
5.6.3 使用異步檢查點操作
5.6.4 調優RocksDB
5.6.5 容量規劃
5.6.6 壓縮
第6章 流處理高級操作
6.1 視窗
6.1.1 視窗的基本概念
6.1.2 視窗分配器
6.1.3 視窗函式
6.1.4 視窗觸發器
6.1.5 視窗剔除器
6.1.6 允許數據延遲
6.1.7 視窗的快速實現方法
6.1.8 查看視窗使用組件
6.2 時間
6.2.1 時間語義
6.2.2 事件時間與水印
6.2.3 設定時間特性
6.3 數據流的連線操作
6.3.1 視窗Join
6.3.2 視窗CoGroup
6.3.3 間隔Join
6.4 側端輸出
6.4.1 基於複製數據流的方案
6.4.2 基於Split和Select的方案
6.4.3 基於側端輸出的方案
6.5 ProcessFunction
6.5.1 基本概念
6.5.2 計時器
6.6 自定義數據源函式
6.6.1 SourceFunction接口
6.6.2 ParallelSourceFunction接口
6.6.3 RichParallelSourceFunction抽象類
6.6.4 具備檢查點特性的數據源函式
6.7 自定義數據接收器函式
6.7.1 SinkFunction接口
6.7.2 RichSinkFunction抽象類
6.8 數據流連線器
6.8.1 內置連線器
6.8.2 數據源和數據接收器的容錯保證
6.8.3 Kafka連線器
6.8.4 安裝Kafka的注意事項
6.8.5 Kafka 1.0.0+ 連線器
6.8.6 Kafka消費者
6.8.7 Kafka生產者
6.8.8 Kafka連線器指標
第7章 批處理基礎操作
7.1 DataSet的基本概念
7.1.1 批處理示例程式
7.1.2 數據源
7.1.3 數據接收器
7.2 數據集的基本操作
7.2.1 Map
7.2.2 FlatMap
7.2.3 MapPartition
7.2.4 Filter
7.2.5 Project
7.2.6 Union
7.2.7 Distinct
7.2.8 GroupBy
7.2.9 Reduce
7.2.10 ReduceGroup
7.2.11 Aggregate
7.2.12 Join
7.2.13 OuterJoin
7.2.14 Cross
7.2.15 CoGroup
7.3 將參數傳遞給函式
7.4 廣播變數
7.4.1 註冊廣播變數
7.4.2 訪問廣播變數
7.4.3 代碼實現
7.5 物理分區
7.5.1 Rebalance
7.5.2 PartitionByHash
7.5.3 PartitionByRange
7.5.4 SortPartition
7.6 批處理的本地測試
7.6.1 本地執行環境
7.6.2 集合支持的數據源和數據接收器
第8章 Table API和SQL
8.1 基礎概念和通用API
8.1.1 添加依賴
8.1.2 第一個Hello World表程式
8.1.3 表程式的公共結構
8.1.4 創建一個TableEnvironment
8.1.5 在目錄中註冊表
8.1.6 查詢一個表
8.1.7 DataStream和DataSet API的集成
8.1.8 數據類型到表模式的映射
8.1.9 查詢最佳化
8.2 SQL
8.2.1 指定一個查詢
8.2.2 SQL支持的語法
8.2.3 SQL操作
8.2.4 數據類型
8.2.5 保留關鍵字
8.3 Table API
8.4 自定義函式
8.4.1 標量函式
8.4.2 表函式
8.4.3 聚合函式
8.4.4 自定義函式與運行環境集成
8.5 SQL客戶端
8.5.1 啟動SQL客戶端
8.5.2 配置參數
8.5.3 分離的SQL查詢
8.5.4 SQL客戶端中的視圖
8.5.5 SQL客戶端中的時態表
第9章 流處理中的Table API和SQL
9.1 動態表
9.1.1 動態表和連續查詢
9.1.2 在數據流中定義動態表
9.1.3 動態表到數據流的轉換
9.2 時間屬性
9.2.1 基本概念
9.2.2 組視窗
9.2.3 處理時間
9.2.4 事件時間
9.3 動態表的Join
9.3.1 常規Join
9.3.2 時間視窗Join
9.4 時態表
9.4.1 需求背景
9.4.2 時態表函式
9.5 查詢配置
9.5.1 查詢配置對象
9.5.2 空閒狀態保留時間
9.6 連線外部系統
9.6.1 概述
9.6.2 表模式
9.6.3 更新模式
9.6.4 表格式
9.6.5 表連線器
9.6.6 未統一的TableSources和TableSinks
第10章 執行管理
10.1 執行參數
10.1.1 在ExecutionEnvironment中設定參數
10.1.2 在ExecutionConfig中設定參數
10.2 並行執行
10.2.1 操作符級別
10.2.2 執行環境級別
10.2.3 客戶端級別
10.2.4 系統級別
10.2.5 設定最大並行度
10.3 重啟策略
10.3.1 固定延遲重啟策略
10.3.2 故障率重啟策略
10.3.3 沒有重新啟動策略
10.3.4 回退重啟策略
10.4 程式打包和部署
10.4.1 打包Flink程式
10.4.2 Web UI(Web管控台)提交
10.4.3 命令行客戶端提交
10.5 命令行接口
10.5.1 將Flink程式提交到Flink集群
10.5.2 列出集群中的作業
10.5.3 調整集群中的作業
10.5.4 保存點操作命令
10.6 執行計畫
10.6.1 線上可視化工具
10.6.2 Web管控台可視化
作者簡介
劉洋
國家認證軟體設計師,獲得Apache Kylin管理員認證。
現任某上市諮詢公司高級諮詢顧問,有多年大數據、流式計算方面的開發經驗,對Hadoop、Strom、Flink等大數據計算引擎有著非常深入的理解,積累了豐富的項目實踐經驗。先後利用相關技術為銀行、保險、能源等領域的頭部企業解決業務痛點。
個人技術部落格:www.cnblogs.com/intsmaze
個人Github項目:github.com/intsmaze