深入理解 Flink 核心設計與實踐原理

劉洋

  • 出版商: 電子工業
  • 出版日期: 2020-11-01
  • 定價: $828
  • 售價: 8.5$704
  • 語言: 簡體中文
  • 頁數: 488
  • 裝訂: 平裝
  • ISBN: 7121399113
  • ISBN-13: 9787121399114
  • 相關分類: Java 程式語言
  • 立即出貨

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

商品描述

本書從Apache Flink的緣起開始,由淺入深,理論結合實踐,全方位地介紹Apache Flink這一處理海量數據集的高性能工具。
本書圍繞部署、流處理、批處理、Table API和SQL四大模塊進行講解,
並詳細說明Apache Flink的每個特性的實際業務背景,使讀者不僅能編寫可運行的Apache Flink程序代碼,
還能深刻理解並正確地將其運用到合適的生產業務環境中。
雖然本書是以Apache Flink技術框架來講解流計算技術的,
但是流計算領域開發所面臨的各種問題同樣是Java後端開發者在進行服務端開發時所要面臨的,
如有狀態計算、Exactly Once語義等。
因此,Apache Flink框架為解決這些問題而設計的方案同樣值得Java後端開發者借鑒。
本書適合初級和中級軟件工程師閱讀,未接觸過流計算領域的Java開發者也可以從本書中獲益。
針對初學者,本書提供Windows環境搭建的演示,
使不具備Linux系統操作經驗的讀者也可以快速學習Apache Flink。

作者簡介

國家認證軟件設計師,獲得Apache Kylin管理員認證。現任某上市諮詢公司高級諮詢顧問,有多年大數據、流式計算方面的開發經驗,對Hadoop、Strom、Flink等大數據計算引擎有著非常深入的理解,積累了豐富的項目實踐經驗。先後利用相關技術為銀行、保險、能源等領域的頭部企業解決業務痛點。個人技術博客:www.cnblogs.com/intsmaze個人Github項目:github.com/intsmaze

目錄大綱

目錄
第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獨立模式
2.2.1配置適當免密登錄
2.2.2部署獨立模式的積累
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地圖
4.2.2平面圖
4.2.3過濾器
4.2.4
4.2.5減少
4.2.6匯總
4.2.7拆分和選擇
4.2.8項目
4.2.9聯盟
4.2.10 Connect和CoMap,CoFlatMap
4.2.11迭代
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隨機分配策略
4.5.3廣播分區策略
4.5.4重新平衡分區策略
4.5.5重新調整分區策略
4.5.6轉發分區策略
4.5.7全局分區策略
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操作員狀態和鍵控狀態
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窗口加入
6.3.2WindowsCoGroup
6.3.3間隔加入
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卡夫卡生產者
6.8.8 Kafka連接器指標

第7章批處理基礎操作
7.1 DataSet的基本概念
7.1.1批處理示例程序
7.1.2數據源
7.1.3數據接收器
7.2數據集的基本操作
7.2.1地圖
7.2.2平面圖
7.2.3 MapPartition
7.2.4過濾器
7.2.5項目
7.2.6聯盟
7.2.7與眾不同
7.2.8分組
7.2.9減少
7.2.10減少組
7.2.11骨料
7.2.12加入
7.2.13外加入
7.2.14跨
7.2.15 CoGroup
7.3將參數傳遞給函數
7.4廣播變量
7.4.1註冊廣播變量
7.4.2訪問廣播變量
7.4.3代碼實現
7.5物理分區
7.5.1再平衡
7.5.2 PartitionByHash
7.5.3 PartitionByRange
7.5.4排序分區
7.6批處理的本地測試
7.6.1本地執行環境
7.6.2集合支持的數據源和數據接收器

第8章表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章流處理中的表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動態表的加入
9.3.1常規加入
9.3.2時間窗口加入
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在執行環境中設置參數
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管控台可視化