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