劍指大數(shù)據(jù)——Flink實(shí)時(shí)數(shù)據(jù)倉庫項(xiàng)目實(shí)戰(zhàn)(電商版)
定 價(jià):108 元
叢書名:程序員硬核技術(shù)叢書
- 作者:尚硅谷教育
- 出版時(shí)間:2023/10/1
- ISBN:9787121463990
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP274
- 頁碼:380
- 紙張:
- 版次:01
- 開本:16開
本書從需求規(guī)劃、需求實(shí)現(xiàn)到可視化展示等,遵循項(xiàng)目開發(fā)的主要流程,全景介紹了電商行業(yè)Flink實(shí)時(shí)數(shù)據(jù)倉庫的搭建過程。在整個(gè)項(xiàng)目的搭建過程中,介紹了主要組件的安裝部署、需求實(shí)現(xiàn)的具體思路、問題的解決方案等,并穿插了大數(shù)據(jù)和數(shù)據(jù)倉庫相關(guān)的理論知識(shí),包括數(shù)據(jù)倉庫的概念介紹、電商業(yè)務(wù)概述、數(shù)據(jù)倉庫理論介紹和數(shù)據(jù)倉庫建模等。最核心的內(nèi)容是代碼中對(duì)Flink的靈活應(yīng)用,為讀者展示了Flink處理數(shù)據(jù)的多種可能性。本書最后還詳細(xì)講解了項(xiàng)目的性能調(diào)優(yōu)技巧和實(shí)戰(zhàn)案例,幫助讀者掌握更多的實(shí)戰(zhàn)經(jīng)驗(yàn)。 本書適合具有一定編程基礎(chǔ)的讀者學(xué)習(xí)或作為參考資料,通過本書,可以使你快速了解實(shí)時(shí)數(shù)據(jù)倉庫,全面掌握實(shí)時(shí)數(shù)據(jù)倉庫的相關(guān)技術(shù)。
尚硅谷教育是一家專業(yè)的IT教育培訓(xùn)機(jī)構(gòu),開設(shè)了JavaEE、大數(shù)據(jù)、HTML5前端等多門學(xué)科,在互聯(lián)網(wǎng)上發(fā)布的JavaEE、大數(shù)據(jù)、HTML5前端、區(qū)塊鏈、C語言、Python等技術(shù)視頻教程廣受贊譽(yù)。
目 錄
第1章 實(shí)時(shí)數(shù)據(jù)倉庫概論 1
1.1 什么是數(shù)據(jù)倉庫 1
1.2 走進(jìn)實(shí)時(shí)數(shù)據(jù)倉庫 2
1.2.1 實(shí)時(shí)計(jì)算和離線計(jì)算 2
1.2.2 實(shí)時(shí)數(shù)據(jù)倉庫的構(gòu)建目的 3
1.2.3 實(shí)時(shí)技術(shù)發(fā)展 4
1.2.4 實(shí)時(shí)數(shù)據(jù)倉庫現(xiàn)狀分析 5
1.3 學(xué)前導(dǎo)讀 7
1.3.1 學(xué)習(xí)的基本要求 7
1.3.2 你將學(xué)到什么 7
1.4 本章總結(jié) 8
第2章 需求分析與架構(gòu)設(shè)計(jì) 9
2.1 項(xiàng)目需求分析 9
2.1.1 實(shí)時(shí)數(shù)據(jù)倉庫項(xiàng)目產(chǎn)品描述 9
2.1.2 項(xiàng)目流程圖 10
2.1.3 指標(biāo)體系分析 11
2.2 項(xiàng)目架構(gòu)概述 12
2.2.1 架構(gòu)設(shè)計(jì) 12
2.2.2 分層設(shè)計(jì) 13
2.3 技術(shù)選型 14
2.4 本章總結(jié) 17
第3章 項(xiàng)目部署與框架搭建 18
3.1 集群規(guī)劃與服務(wù)器配置 18
3.2 JDK與Hadoop安裝 18
3.2.1 虛擬機(jī)環(huán)境準(zhǔn)備 19
3.2.2 JDK安裝 22
3.2.3 Hadoop安裝 23
3.2.4 Hadoop分布式集群部署 24
3.3 ZooKeeper與Kafka安裝 30
3.3.1 安裝ZooKeeper 30
3.3.2 Zookeeper集群啟動(dòng)、停止腳本 32
3.3.3 安裝Kafka 33
3.3.4 Kafka集群啟動(dòng)、停止腳本 34
3.3.5 Kafka Topic相關(guān)操作 35
3.4 Flink的安裝與部署 36
3.4.1 YARN模式安裝 36
3.4.2 任務(wù)部署 37
3.5 本章總結(jié) 38
第4章 數(shù)據(jù)倉庫建模理論 39
4.1 數(shù)據(jù)倉庫理論準(zhǔn)備 39
4.1.1 數(shù)據(jù)建模概述 39
4.1.2 關(guān)系模型與范式理論 40
4.1.3 維度模型 43
4.1.4 維度建模理論之事實(shí)表 44
4.1.5 維度建模理論之維度表 46
4.2 數(shù)據(jù)倉庫建模實(shí)踐 48
4.2.1 名詞概念 48
4.2.2 為什么要分層 49
4.2.3 數(shù)據(jù)倉庫構(gòu)建流程 50
4.3 本章總結(jié) 54
第5章 構(gòu)建ODS層之用戶行為數(shù)據(jù)采集 55
5.1 日志生成 55
5.1.1 數(shù)據(jù)埋點(diǎn) 55
5.1.2 目標(biāo)數(shù)據(jù) 56
5.1.3 數(shù)據(jù)模擬 60
5.2 采集日志的Flume 63
5.2.1 Flume組件 63
5.2.2 Flume安裝 64
5.2.3 采集日志Flume配置 64
5.2.4 Flume的攔截器 65
5.2.5 采集日志Flume啟動(dòng)、停止腳本 69
5.3 本章總結(jié) 70
第6章 構(gòu)建ODS層之業(yè)務(wù)數(shù)據(jù)采集 71
6.1 電商業(yè)務(wù)概述 71
6.1.1 電商業(yè)務(wù)流程 71
6.1.2 電商常識(shí) 72
6.1.3 電商表結(jié)構(gòu) 73
6.2 數(shù)據(jù)同步概述 82
6.2.1 數(shù)據(jù)同步策略 82
6.2.2 數(shù)據(jù)同步工具選擇 83
6.3 業(yè)務(wù)數(shù)據(jù)模擬 83
6.3.1 MySQL安裝 83
6.3.2 數(shù)據(jù)模擬流程 85
6.4 Maxwell數(shù)據(jù)采集 87
6.4.1 MySQL中的binlog 87
6.4.2 Maxwell工作原理 89
6.4.3 業(yè)務(wù)數(shù)據(jù)采集 93
6.4.4 首日全量同步 95
6.5 本章總結(jié) 97
第7章 構(gòu)建DIM層 98
7.1 開發(fā)環(huán)境準(zhǔn)備 98
7.1.1 IDEA開發(fā)環(huán)境準(zhǔn)備 98
7.1.2 HBase與Phoenix 102
7.2 關(guān)鍵技術(shù)解讀 106
7.2.1 Flink CDC 106
7.2.2 配置表設(shè)計(jì) 110
7.3 DIM層代碼編寫 112
7.3.1 接收Kafka數(shù)據(jù)過濾臟數(shù)據(jù) 112
7.3.2 動(dòng)態(tài)拆分維度表數(shù)據(jù) 114
7.3.3 將流中的數(shù)據(jù)保存至Phoenix 124
7.3.4 測試 125
7.4 本章總結(jié) 126
第8章 構(gòu)建DWD層 127
8.1 概述 127
8.2 流量域五大事務(wù)事實(shí)表 128
8.2.1 思路梳理 128
8.2.2 代碼編寫 132
8.3 交易域加購事務(wù)事實(shí)表 139
8.3.1 思路梳理 140
8.3.2 編寫代碼 143
8.4 交易域下單事務(wù)事實(shí)表 147
8.4.1 思路梳理 147
8.4.2 代碼編寫 151
8.5 交易域取消訂單事務(wù)事實(shí)表 155
8.5.1 思路梳理 155
8.5.2 代碼編寫 157
8.6 交易域支付成功事務(wù)事實(shí)表 160
8.6.1 思路梳理 160
8.6.2 代碼編寫 162
8.7 交易域退單事務(wù)事實(shí)表 165
8.7.1 思路梳理 166
8.7.2 代碼編寫 167
8.8 交易域退款成功事務(wù)事實(shí)表 170
8.8.1 思路梳理 170
8.8.2 代碼編寫 171
8.9 事實(shí)表動(dòng)態(tài)分流 175
8.9.1 思路梳理 175
8.9.2 代碼編寫 177
8.10 本章總結(jié) 186
第9章 構(gòu)建DWS層 187
9.1 概述 187
9.2 環(huán)境準(zhǔn)備 190
9.2.1 安裝Redis 190
9.2.2 安裝ClickHouse 191
9.3 流量域關(guān)鍵詞粒度頁面瀏覽各窗口匯總表 193
9.3.1 思路梳理 193
9.3.2 代碼編寫 196
9.4 流量域版本—渠道—地區(qū)—訪客類別粒度頁面瀏覽各窗口匯總表 202
9.4.1 思路梳理 202
9.4.2 代碼編寫 203
9.5 流量域頁面瀏覽各窗口匯總表 209
9.5.1 思路梳理 209
9.5.2 代碼編寫 210
9.6 用戶域用戶登錄各窗口匯總表 215
9.6.1 思路梳理 215
9.6.2 代碼編寫 217
9.7 用戶域用戶注冊各窗口匯總表 222
9.7.1 思路梳理 222
9.7.2 代碼編寫 222
9.8 交易域加購各窗口匯總表 226
9.8.1 思路梳理 226
9.8.2 代碼編寫 227
9.9 交易域支付各窗口匯總表 231
9.9.1 思路梳理 231
9.9.2 代碼編寫 232
9.10 交易域下單各窗口匯總表 237
9.10.1 思路梳理 237
9.10.2 代碼編寫 238
9.11 交易域SKU粒度下單各窗口匯總表 243
9.11.1 思路梳理 243
9.11.2 代碼編寫 248
9.12 交易域省份粒度下單各窗口匯總表 266
9.12.1 思路梳理 266
9.12.2 代碼編寫 267
9.13 交易域品牌—分類—用戶粒度退單各窗口匯總表 274
9.13.1 思路梳理 274
9.13.2 代碼編寫 275
9.14 本章總結(jié) 282
第10章 數(shù)據(jù)可視化大屏 283
10.1 需求分析 283
10.2 Sugar BI介紹 283
10.2.1 簡介 283
10.2.2 使用入門 284
10.2.3 效果展示 286
10.3 本章總結(jié) 286
第11章 性能調(diào)優(yōu)理論與實(shí)踐 287
11.1 項(xiàng)目環(huán)境概述 287
11.1.1 集群環(huán)境 287
11.1.2 任務(wù)提交測試 288
11.2 YARN調(diào)優(yōu)策略 297
11.2.1 YARN內(nèi)存調(diào)優(yōu) 297
11.2.2 YARN CPU調(diào)優(yōu) 297
11.3 Flink內(nèi)存模型 298
11.3.1 TaskManager內(nèi)存模型 298
11.3.2 JobManager內(nèi)存模型 301
11.4 并行度與slot 302
11.4.1 Flink的并行度配置 302
11.4.2 TaskManager slot個(gè)數(shù)配置 304
11.5 狀態(tài)調(diào)優(yōu) 304
11.5.1 Flink的狀態(tài)編程概述 305
11.5.2 檢查點(diǎn)相關(guān)配置 306
11.5.3 開啟狀態(tài)訪問性能監(jiān)控 308
11.5.4 RocksDB狀態(tài)后端的性能優(yōu)化手段 310
11.5.5 開啟分區(qū)索引和過濾器功能 311
11.5.6 調(diào)整預(yù)定義選項(xiàng) 312
11.5.7 手動(dòng)調(diào)整參數(shù) 312
11.6 反壓 313
11.6.1 反壓概述 313
11.6.2 如何定位反壓 314
11.6.3 反壓的原因及解決辦法 317
11.7 數(shù)據(jù)傾斜 320
11.7.1 判斷數(shù)據(jù)傾斜 320
11.7.2 解決數(shù)據(jù)傾斜 321
11.8 Job優(yōu)化 325
11.8.1 為算子指定UUID 325
11.8.2 鏈路延遲監(jiān)控 326
11.8.3 開啟對(duì)象重用 327
11.8.4 細(xì)粒度滑動(dòng)窗口優(yōu)化 328
11.8.5 提前計(jì)算滾動(dòng)窗口 329
11.9 Flink SQL優(yōu)化 329
11.9.1 設(shè)置空閑狀態(tài)保留時(shí)間 329
11.9.2 開啟MiniBatch功能 329
11.9.3 開啟LocalGlobal優(yōu)化 330
11.9.4 開啟Split Distinct優(yōu)化 331
11.9.5 使用FILTER語法 332
11.10 Flink對(duì)接Kafka優(yōu)化 333
11.10.1 Flink并行度與Kafka主題分區(qū)數(shù) 333
11.10.2 指定Watermark空閑等待 334
11.10.3 動(dòng)態(tài)發(fā)現(xiàn)Kafka分區(qū) 334
11.11 DIM層調(diào)優(yōu)實(shí)操 335
11.11.1 YARN資源配置分析 335
11.11.2 Flink內(nèi)存分配分析 336
11.11.3 并行度與slot個(gè)數(shù)配置分析 337
11.11.4 狀態(tài)相關(guān)配置分析 337
11.11.5 DIM層任務(wù)初次提交測試 338
11.11.6 反壓情況分析 344
11.11.7 數(shù)據(jù)傾斜情況分析 348
11.11.8 與Kakfa對(duì)接的相關(guān)優(yōu)化措施 351
11.11.9 任務(wù)重啟 352
11.11.10 最終提交命令 355
11.12 DWD層調(diào)優(yōu)實(shí)操 356
11.12.1 DWD層任務(wù)初次提交測試 356
11.12.2 反壓情況分析 359
11.12.3 數(shù)據(jù)傾斜情況分析 364
11.12.4 最終提交命令 367
11.13 本章總結(jié) 369