注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡家庭與辦公軟件Flink原理與實踐

Flink原理與實踐

Flink原理與實踐

定 價:¥69.80

作 者: 魯蔚征 著
出版社: 人民郵電出版社
叢編項:
標 簽: 暫缺

ISBN: 9787115546159 出版時間: 2021-02-01 包裝: 平裝
開本: 16開 頁數(shù): 301 字數(shù):  

內(nèi)容簡介

  本書圍繞大數(shù)據(jù)流處理領域,介紹Flink DataStream API、時間和窗口、狀態(tài)和檢查點、Table API和SQL等知識。本書以實踐為導向,使用大量真實業(yè)務場景案例來演示如何基于Flink進行流處理。 本書主要面向?qū)Υ髷?shù)據(jù)領域感興趣的本科生、研究生,想轉(zhuǎn)行到大數(shù)據(jù)開發(fā)行業(yè)的在職人員,或有一定大數(shù)據(jù)開發(fā)經(jīng)驗的相關從業(yè)人員。讀者最好有一定的Java或Scala編程基礎,掌握計算機領域的常見技術概念。

作者簡介

  魯蔚征 前小米工程師,現(xiàn)中國人民大學教師,一直從事大數(shù)據(jù)相關的開發(fā)和研究工作,關注大數(shù)據(jù)行業(yè)的發(fā)展,先后接觸了Hadoop、Hive、Kafka、Spark、TensorFlow等大數(shù)據(jù)中間件,在大數(shù)據(jù)的流處理和批處理方向上有一定的實際工作經(jīng)驗。主要研究項目及領域為推薦系統(tǒng)、大數(shù)據(jù)。今日頭條科技領域優(yōu)質(zhì)創(chuàng)作者。

圖書目錄

第 1章 大數(shù)據(jù)技術概述 ................ 1
1.1 什么是大數(shù)據(jù) ................................. 2
1.1.1 大數(shù)據(jù)的5個“V” ....................... 2
1.1.2 大數(shù)據(jù)分而治之 ............................... 3
1.2 從批處理到流處理 .......................... 6
1.2.1 數(shù)據(jù)與數(shù)據(jù)流 ................................... 6
1.2.2 批處理與流處理 ............................... 7
1.2.3 為什么需要一個優(yōu)秀的
流處理框架 ........................................ 7
1.3 代表性大數(shù)據(jù)技術 .......................... 9
1.3.1 Hadoop ............................................ 9
1.3.2 Spark ............................................... 10
1.3.3 Apache Kafka ............................... 11
1.3.4 Flink ................................................. 12
1.4 從Lambda到Kappa:
大數(shù)據(jù)處理平臺的演進 .................. 13
1.4.1 Lambda架構 ................................ 14
1.4.2 Kappa架構 .................................... 15
1.5 流處理基礎概念 ........................... 16
1.5.1 延遲和吞吐 ..................................... 16
1.5.2 窗口與時間 ..................................... 17
1.5.3 狀態(tài)與檢查點 ................................. 20
1.5.4 數(shù)據(jù)一致性保障 ............................. 21
1.6 編程語言的選擇 ........................... 21
1.6.1 Java和Scala ................................. 21
1.6.2 Python ............................................ 22
1.6.3 SQL .................................................. 23
1.7 案例實戰(zhàn) 使用Kafka構建
文本數(shù)據(jù)流 .................................. 23
1.7.1 Kafka和消息隊列相關
背景知識 ..........................................23
1.7.2 使用Kafka構建一個
文本數(shù)據(jù)流 ......................................24
本章小結 ............................................. 26
第 2章 大數(shù)據(jù)編程知識 ...... 27
2.1 繼承和多態(tài) .................................. 28
2.1.1 繼承、類和接口 .............................28
2.1.2 重寫與重載 .....................................30
2.1.3 繼承和多態(tài)小結 .............................32
2.2 泛型 ............................................ 32
2.2.1 Java中的泛型 ................................32
2.2.2 Scala中的泛型 ..............................35
2.2.3 泛型小結 .........................................36
2.3 函數(shù)式編程 .................................. 36
2.3.1 函數(shù)式編程思想簡介 .....................36
2.3.2 Lambda表達式的內(nèi)部結構 ........37
2.3.3 函數(shù)式接口 .....................................38
2.3.4 Java Stream API ...........................40
2.3.5 函數(shù)式編程小結 .............................41
2.4 案例實戰(zhàn) Flink開發(fā)環(huán)境搭建 ........ 42
2.4.1 準備所需軟件 .................................42
2.4.2 下載并安裝Flink ...........................43
2.4.3 創(chuàng)建Flink工程 ..............................43
2.4.4 調(diào)試和運行Flink程序 ..................48
2.4.5 運行程序 .........................................50
Flink原理與實踐
本章小結 ............................................. 53
第3章 Flink的設計與
運行原理 ........................... 54
3.1 Flink數(shù)據(jù)流圖簡介 ....................... 55
3.1.1 Flink程序和數(shù)據(jù)流圖 .................. 55
3.1.2 從邏輯視圖轉(zhuǎn)化為物理執(zhí)行圖 .... 57
3.1.3 數(shù)據(jù)交換策略 ................................. 58
3.2 Flink分布式架構與核心組件 .......... 59
3.2.1 Flink作業(yè)提交過程....................... 59
3.2.2 Flink核心組件 ............................... 60
3.2.3 Flink組件棧 ................................... 61
3.3 任務執(zhí)行與資源劃分 ..................... 63
3.3.1 再談邏輯視圖到物理執(zhí)行圖 ........ 63
3.3.2 任務、算子子任務與算子鏈 ........ 64
3.3.3 Slot與計算資源 ............................ 65
3.4 實驗WordCount程序
迭代和完善 .................................. 67
一、實驗目的 .............................................. 67
二、實驗內(nèi)容 .............................................. 67
三、實驗要求 .............................................. 68
四、實驗報告 .............................................. 68
本章小結 ............................................. 68
第4章 DataStream API的
介紹和使用 ....................... 70
4.1 Flink程序的骨架結構 ................... 71
4.1.1 設置執(zhí)行環(huán)境 ................................. 71
4.1.2 讀取數(shù)據(jù)源 ..................................... 72
4.1.3 進行轉(zhuǎn)換操作 ................................. 72
4.1.4 結果輸出 ......................................... 73
4.1.5 執(zhí)行 ..................................................73
4.2 常見Transformation的
使用方法 ..................................... 73
4.2.1 單數(shù)據(jù)流基本轉(zhuǎn)換 .........................74
4.2.2 基于Key的分組轉(zhuǎn)換 ....................78
4.2.3 多數(shù)據(jù)流轉(zhuǎn)換 .................................84
4.2.4 并行度與數(shù)據(jù)重分布 .....................86
4.3 數(shù)據(jù)類型和序列化 ........................ 92
4.3.1 Flink支持的數(shù)據(jù)類型 ...................92
4.3.2 TypeInformation .........................96
4.3.3 注冊類 ..............................................98
4.3.4 Avro、Kryo、Thrift和
Protobuf .........................................99
4.3.5 數(shù)據(jù)類型的選擇 .......................... 103
4.4 用戶自定義函數(shù) .......................... 104
4.4.1 接口 ............................................... 104
4.4.2 Lambda表達式 .......................... 105
4.4.3 Rich函數(shù)類 ................................. 108
4.5 實驗 股票價格數(shù)據(jù)流處理 ........... 109
一、實驗目的 ............................................ 109
二、實驗內(nèi)容 ............................................ 110
三、實驗要求 ............................................ 111
四、實驗報告 ............................................ 112
本章小結 ........................................... 112
第5章 時間和窗口 .................... 113
5.1 Flink的時間語義 ........................ 114
5.1.1 Flink的3種時間語義 ............... 114
5.1.2 設置時間語義 .............................. 115
5.1.3 Event Time和Watermark ..... 116
5.1.4 分布式環(huán)境下Watermark的
傳播 ................................................ 116
5.1.5 設置時間戳及生成
Watermark .................................. 118
5.1.6 平衡延遲和準確性 ..................... 123
5.2 ProcessFunction系列函數(shù) ........ 123
5.2.1 Timer的使用方法 ...................... 123
5.2.2 側(cè)輸出 .......................................... 126
5.2.3 在兩個數(shù)據(jù)流上使用
ProcessFunction ....................... 127
5.3 窗口算子的使用 .......................... 129
5.3.1 窗口程序的骨架結構 ................. 129
5.3.2 內(nèi)置的3種窗口劃分方法 ......... 131
5.3.3 窗口處理函數(shù) .............................. 135
5.3.4 拓展和自定義窗口 ..................... 141
5.4 雙流連接 ................................... 146
5.4.1 Window Join ............................. 146
5.4.2 Interval Join ............................... 149
5.5 處理遲到數(shù)據(jù) ............................. 150
5.5.1 將遲到數(shù)據(jù)發(fā)送到另外一個
數(shù)據(jù)流 ........................................... 151
5.5.2 更新計算結果 .............................. 151
5.6 實驗 股票價格數(shù)據(jù)進階分析 ........ 153
一、實驗目的 ........................................... 153
二、實驗內(nèi)容 ........................................... 153
三、實驗要求 ........................................... 154
四、實驗報告 ........................................... 154
本章小結 ........................................... 154
第6章 狀態(tài)和檢查點 ................ 155
6.1 實現(xiàn)有狀態(tài)的計算 ...................... 156
6.1.1 為什么要管理狀態(tài) ..................... 156
6.1.2 Flink中幾種常用的狀態(tài) ........... 157
6.1.3 橫向擴展問題 .............................. 159
6.1.4 Keyed State的使用方法 .......... 160
6.1.5 Operator List State的
使用方法 ....................................... 165
6.1.6 BroadcastState的使用方法 .... 169
6.2 Checkpoint機制的原理及
配置方法 ................................... 173
6.2.1 Flink分布式快照流程 ................ 173
6.2.2 分布式快照性能優(yōu)化方案 ......... 177
6.2.3 State Backend ........................... 177
6.2.4 Checkpoint相關配置 ............... 179
6.2.5 重啟恢復流程 .............................. 180
6.3 Savepoint機制的原理及
使用方法 ................................... 182
6.3.1 Savepoint機制與Checkpoint
機制的區(qū)別 ................................... 182
6.3.2 Savepoint的使用方法 ............. 183
6.3.3 讀/寫Savepoint中的數(shù)據(jù) ...... 184
6.3.4 Queryable State和
State Processor API ................... 194
6.4 實驗 電商平臺用戶行為分析 ........ 195
一、實驗目的 ............................................ 195
二、實驗內(nèi)容 ............................................ 195
三、實驗要求 ............................................ 195
四、實驗報告 ............................................ 195
本章小結 ........................................... 195
第7章 Flink連接器 ................ 196
7.1 Flink端到端的
Exactly-Once保障 ................... 197
7.1.1 故障恢復與一致性保障 ............. 197
7.1.2 冪等寫 ........................................... 198
7.1.3 事務寫 ........................................... 199
7.2 自定義Source和Sink ............... 200
7.2.1 Flink 1.11之前的Source ........ 200
7.2.2 Flink 1.11之后的Source ........ 205
Flink原理與實踐
7.2.3 自定義Sink ................................. 205
7.3 Flink中常用的Connector .......... 211
7.3.1 內(nèi)置I/O接口 .............................. 212
7.3.2 Flink Kafka Connector ........... 217
7.4 實驗 讀取并輸出股票價格
數(shù)據(jù)流 ...................................... 220
一、實驗目的 ........................................... 220
二、實驗內(nèi)容 ........................................... 220
三、實驗要求 ........................................... 220
四、實驗報告 ........................................... 221
本章小結 ........................................... 221
第8章 Table API & SQL的
介紹和使用 ..................... 222
8.1 Table API & SQL綜述 .............. 223
8.1.1 Table API & SQL程序的
骨架結構 ....................................... 223
8.1.2 創(chuàng)建TableEnvironment .......... 224
8.1.3 獲取表 .......................................... 227
8.1.4 在表上執(zhí)行語句 .......................... 228
8.1.5 將表結果輸出 .............................. 229
8.1.6 執(zhí)行作業(yè) ...................................... 229
8.1.7 獲取表的具體方式 ..................... 231
8.2 動態(tài)表和持續(xù)查詢 ...................... 233
8.2.1 動態(tài)表和持續(xù)查詢 ..................... 233
8.2.2 流處理的限制 .............................. 237
8.2.3 狀態(tài)過期時間 .............................. 238
8.3 時間和窗口 ................................ 238
8.3.1 時間屬性 ...................................... 238
8.3.2 窗口聚合 ...................................... 241
8.4 Join .......................................... 249
8.4.1 時間窗口 Join ............................ 250
8.4.2 臨時表 Join ................................ 251
8.4.3 傳統(tǒng)意義上的Join ..................... 254
8.5 SQL DDL ................................. 256
8.5.1 注冊和獲取表 .............................. 256
8.5.2 USE和SHOW語句 .................. 258
8.5.3 CREATE、DROP、
ALTER語句 .................................. 259
8.5.4 INSERT語句 ............................... 262
8.6 系統(tǒng)內(nèi)置函數(shù) ............................. 263
8.6.1 標量函數(shù) ...................................... 264
8.6.2 聚合函數(shù) ...................................... 269
8.6.3 時間單位 ...................................... 269
8.7 用戶自定義函數(shù) .......................... 270
8.7.1 注冊函數(shù) ...................................... 270
8.7.2 標量函數(shù) ...................................... 270
8.7.3 表函數(shù) ........................................... 272
8.7.4 聚合函數(shù) ...................................... 274
8.8 實驗 使用Flink SQL處理
IoT數(shù)據(jù) .................................... 277
一、實驗目的 ............................................ 277
二、實驗內(nèi)容 ............................................ 277
三、實驗要求 ............................................ 278
四、實驗報告 ............................................ 279
本章小結 ........................................... 279
第9章 Flink的部署和配置 .... 280
9.1 Flink集群部署模式 ..................... 281
9.1.1 Standalone集群 ....................... 281
9.1.2 Hadoop YARN集群 ................. 282
9.1.3 Kubernetes集群 ....................... 285
9.2 配置文件 ................................... 287
9.2.1 Java和類加載 ............................. 288
9.2.2 并行度與槽位劃分 ...................... 289
9.2.3 內(nèi)存 .............................................. 290
9.2.4 磁盤 .............................................. 294
9.3 算子鏈與槽位共享 ...................... 294
9.3.1 設置算子鏈 .................................. 294
9.3.2 設置槽位共享 .............................. 295
9.4 命令行工具 ................................ 296
9.4.1 提交作業(yè) ...................................... 297
9.4.2 管理作業(yè) ...................................... 298
9.5 與Hadoop集成 ........................ 299
9.5.1 添加Hadoop Classpath ......... 299
9.5.2 將Hadoop依賴包添加到
9.5.3 本地調(diào)試 ...................................... 300
9.6 實驗 作業(yè)編碼、打包與提交 ........ 301
一、實驗目的 ............................................ 301
二、實驗內(nèi)容 ............................................ 301
三、實驗要求 ............................................ 301
四、實驗報告 ............................................ 301
本章小結 ........................................... 301
參考文獻 ......................................... 302

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號