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

Flink原理與實踐

Flink原理與實踐

定 價:¥69.80

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

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

內(nèi)容簡介

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

作者簡介

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

圖書目錄

第 1章 大數(shù)據(jù)技術(shù)概述 ................ 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ù)技術(shù) .......................... 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架構(gòu) ................................ 14
1.4.2 Kappa架構(gòu) .................................... 15
1.5 流處理基礎(chǔ)概念 ........................... 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構(gòu)建
文本數(shù)據(jù)流 .................................. 23
1.7.1 Kafka和消息隊列相關(guān)
背景知識 ..........................................23
1.7.2 使用Kafka構(gòu)建一個
文本數(shù)據(jù)流 ......................................24
本章小結(jié) ............................................. 26
第 2章 大數(shù)據(jù)編程知識 ...... 27
2.1 繼承和多態(tài) .................................. 28
2.1.1 繼承、類和接口 .............................28
2.1.2 重寫與重載 .....................................30
2.1.3 繼承和多態(tài)小結(jié) .............................32
2.2 泛型 ............................................ 32
2.2.1 Java中的泛型 ................................32
2.2.2 Scala中的泛型 ..............................35
2.2.3 泛型小結(jié) .........................................36
2.3 函數(shù)式編程 .................................. 36
2.3.1 函數(shù)式編程思想簡介 .....................36
2.3.2 Lambda表達(dá)式的內(nèi)部結(jié)構(gòu) ........37
2.3.3 函數(shù)式接口 .....................................38
2.3.4 Java Stream API ...........................40
2.3.5 函數(shù)式編程小結(jié) .............................41
2.4 案例實戰(zhàn) Flink開發(fā)環(huán)境搭建 ........ 42
2.4.1 準(zhǔn)備所需軟件 .................................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原理與實踐
本章小結(jié) ............................................. 53
第3章 Flink的設(shè)計與
運行原理 ........................... 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分布式架構(gòu)與核心組件 .......... 59
3.2.1 Flink作業(yè)提交過程....................... 59
3.2.2 Flink核心組件 ............................... 60
3.2.3 Flink組件棧 ................................... 61
3.3 任務(wù)執(zhí)行與資源劃分 ..................... 63
3.3.1 再談邏輯視圖到物理執(zhí)行圖 ........ 63
3.3.2 任務(wù)、算子子任務(wù)與算子鏈 ........ 64
3.3.3 Slot與計算資源 ............................ 65
3.4 實驗WordCount程序
迭代和完善 .................................. 67
一、實驗?zāi)康摹?............................................. 67
二、實驗內(nèi)容 .............................................. 67
三、實驗要求 .............................................. 68
四、實驗報告 .............................................. 68
本章小結(jié) ............................................. 68
第4章 DataStream API的
介紹和使用 ....................... 70
4.1 Flink程序的骨架結(jié)構(gòu) ................... 71
4.1.1 設(shè)置執(zhí)行環(huán)境 ................................. 71
4.1.2 讀取數(shù)據(jù)源 ..................................... 72
4.1.3 進行轉(zhuǎn)換操作 ................................. 72
4.1.4 結(jié)果輸出 ......................................... 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表達(dá)式 .......................... 105
4.4.3 Rich函數(shù)類 ................................. 108
4.5 實驗 股票價格數(shù)據(jù)流處理 ........... 109
一、實驗?zāi)康摹?........................................... 109
二、實驗內(nèi)容 ............................................ 110
三、實驗要求 ............................................ 111
四、實驗報告 ............................................ 112
本章小結(jié) ........................................... 112
第5章 時間和窗口 .................... 113
5.1 Flink的時間語義 ........................ 114
5.1.1 Flink的3種時間語義 ............... 114
5.1.2 設(shè)置時間語義 .............................. 115
5.1.3 Event Time和Watermark ..... 116
5.1.4 分布式環(huán)境下Watermark的
傳播 ................................................ 116
5.1.5 設(shè)置時間戳及生成
Watermark .................................. 118
5.1.6 平衡延遲和準(zhǔn)確性 ..................... 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 窗口程序的骨架結(jié)構(gòu) ................. 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 更新計算結(jié)果 .............................. 151
5.6 實驗 股票價格數(shù)據(jù)進階分析 ........ 153
一、實驗?zāi)康摹?.......................................... 153
二、實驗內(nèi)容 ........................................... 153
三、實驗要求 ........................................... 154
四、實驗報告 ........................................... 154
本章小結(jié) ........................................... 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相關(guān)配置 ............... 179
6.2.5 重啟恢復(fù)流程 .............................. 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
一、實驗?zāi)康摹?........................................... 195
二、實驗內(nèi)容 ............................................ 195
三、實驗要求 ............................................ 195
四、實驗報告 ............................................ 195
本章小結(jié) ........................................... 195
第7章 Flink連接器 ................ 196
7.1 Flink端到端的
Exactly-Once保障 ................... 197
7.1.1 故障恢復(fù)與一致性保障 ............. 197
7.1.2 冪等寫 ........................................... 198
7.1.3 事務(wù)寫 ........................................... 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
一、實驗?zāi)康摹?.......................................... 220
二、實驗內(nèi)容 ........................................... 220
三、實驗要求 ........................................... 220
四、實驗報告 ........................................... 221
本章小結(jié) ........................................... 221
第8章 Table API & SQL的
介紹和使用 ..................... 222
8.1 Table API & SQL綜述 .............. 223
8.1.1 Table API & SQL程序的
骨架結(jié)構(gòu) ....................................... 223
8.1.2 創(chuàng)建TableEnvironment .......... 224
8.1.3 獲取表 .......................................... 227
8.1.4 在表上執(zhí)行語句 .......................... 228
8.1.5 將表結(jié)果輸出 .............................. 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 標(biāo)量函數(shù) ...................................... 264
8.6.2 聚合函數(shù) ...................................... 269
8.6.3 時間單位 ...................................... 269
8.7 用戶自定義函數(shù) .......................... 270
8.7.1 注冊函數(shù) ...................................... 270
8.7.2 標(biāo)量函數(shù) ...................................... 270
8.7.3 表函數(shù) ........................................... 272
8.7.4 聚合函數(shù) ...................................... 274
8.8 實驗 使用Flink SQL處理
IoT數(shù)據(jù) .................................... 277
一、實驗?zāi)康摹?........................................... 277
二、實驗內(nèi)容 ............................................ 277
三、實驗要求 ............................................ 278
四、實驗報告 ............................................ 279
本章小結(jié) ........................................... 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 設(shè)置算子鏈 .................................. 294
9.3.2 設(shè)置槽位共享 .............................. 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
一、實驗?zāi)康摹?........................................... 301
二、實驗內(nèi)容 ............................................ 301
三、實驗要求 ............................................ 301
四、實驗報告 ............................................ 301
本章小結(jié) ........................................... 301
參考文獻 ......................................... 302

本目錄推薦

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