大數據平臺架構與原型實現:數據中台建設實戰 | 被動收入的投資秘訣 - 2024年7月

大數據平臺架構與原型實現:數據中台建設實戰

作者:耿立超
出版社:電子工業
出版日期:2020年07月01日
ISBN:9787121390449
語言:繁體中文

目前,在基於大數據技術的數據中台建設過程中,由於缺乏完備的架構參考和類似於“腳手架”的原型項目,很多IT團隊會在工程技術層面上感到無從下手。開發人員迫切地需要設計良好的架構參考和簡單易用的原型專案幫助他們快速啟動自己的數據中台建設,本書就是為這一目標而寫作的。本書以大數據平臺的架構設計為主題,圍繞一個2萬行原始程式碼的原型專案講解和演示如何在工程技術層面構建當下流行的數據中台。

全書涵蓋建設一個企業數據平臺所需的各個重要環節,包括基礎設施建設、數據採集、主數據管理、即時計算、批次處理與數據倉庫、數據存儲及作業調度,每個環節獨立成章,每一章介紹對應主題的架構方案和技術選型,然後結合原型項目講解具體的實現細節。如果你是一位架構師,本書可以幫助你提升對大數據平臺的整體把控力;如果你是中高級開發人員,建議你選擇自己感興趣的章節深入學習原型項目的代碼;如果你是企業的CIO或數據團隊的負責人,本書的第1、2、4章對於你定制企業數據中台戰略、規劃數據平臺藍圖及組建數據團隊都有重要的參考價值。

耿立超

架構師,14年IT系統開發和架構經驗,對大資料、企業級應用架構、SaaS、分散式存儲和領域驅動設計有豐富的實踐經驗,熱衷函數式程式設計。目前負責企業資料中台的架構設計和開發工作,對Hadoop/Spark 生態系統有深入和廣泛的瞭解,參與過Hadoop商業發行版本的開發,曾帶領團隊開發過多個基於大資料技術的企業資料平臺,完成包含資料獲取、資料倉庫、即時處理和資料服務的完整平臺建設。

第1章 企業與數據 1
1.1 數據的價值 3
1.2 企業的數據應用能力 6
1.3 企業的數據技術成熟度 12
1.4 數據團隊建設 14
1.4.1 大數據人才類型 14
1.4.2 數據團隊的組織與管理 20
1.5 建設數據文化 25

第2章 聚焦中台 27
2.1 中台簡介 27
2.2 企業資訊系統現狀 28
2.2.1 點對點式的系統集成 29
2.2.2 重複建設 30
2.2.3 阻礙業務沉澱與發展 31
2.3 煙囪架構案例:會員管理 31
2.4 曾經的“救贖”——SOA 38
2.5 中台詳解 41
2.5.1 中台架構 42
2.5.2 中台的技術體系 46
2.5.3 中台的組織架構 48
2.5.4 中台不是“銀彈” 51
2.6 數據中台 52
2.6.1 企業數據資產的現狀 53
2.6.2 數據中台具備的能力 54
2.6.3 數據中台建設策略 56

第3章 基礎設施 60
3.1 集群規劃 61
3.1.1 集群規模與節點配置 61
3.1.2 節點角色分配 63
3.2 創建實例與組網 65
3.2.1 登錄雲控制台 65
3.2.2 創建專有網路 67
3.2.3 創建安全性群組 67
3.2.4 創建實例 72
3.2.5 申請彈性公網IP位址 78
3.3 安裝集群 79
3.3.1 軟體清單 79
3.3.2 環境預配置 80
3.3.3 安裝Redis 86
3.3.4 安裝Galera(MySQL集群) 87
3.3.5 搭建本地CDH Repository 100
3.3.6 安裝Cloudera Manager Server 103
3.3.7 安裝CDH 110
3.3.8 高可用配置 114
3.3.9 安裝Spark 2 117
3.3.10 啟用Spark SQL 118
3.4 安裝單節點集群 121

第4章 架構與原型 122
4.1 大數據平臺架構設計 123
4.2 原型項目業務背景 127
4.3 原型專案架構方案 132
4.4 原型專案工程結構 139
4.5 部署原型專案 142
4.5.1 配置伺服器 142
4.5.2 構建與部署 151
4.5.3 最小化增量部署 165

第5章 數據採集 167
5.1 技術堆疊與選型 168
5.2 需求與概要設計 171
5.3 原型專案設計 173
5.4 生成dummy數據 174
5.5 基於Sqoop的批量導入 177
5.5.1 項目原型 177
5.5.2 使用Sqoop 180
5.5.3 增量導入與全量導入 184
5.6 基於Camel的即時採集 185
5.6.1 項目原型 186
5.6.2 基本的數據採集 188
5.6.3 應對採集作業超時 193
5.6.4 應對數據延遲就緒 197

第6章 主數據管理 202
6.1 主數管理據系統的建設策略 202
6.2 原型設計 204
6.3 項目構建與運行 205
6.4 使用主數據 209
6.5 圍繞主數據進行領域建模 209
6.6 主數據在記憶體數據庫中的組織細微性 219

第7章 即時計算 221
7.1 ETL已死,流計算永存 221
7.2 技術堆疊與選型 223
7.2.1 Storm 223
7.2.2 Spark Streaming 225
7.2.3 Flink 235
7.2.4 Kafka Stream 237
7.2.5 關於選型的考量 238
7.3 即時計算需求分析 239
7.4 原型項目介紹與構建 241
7.5 流計算工程結構 243
7.6 集成Kafka 245
7.7 集成HBase 246
7.8 基於時間窗口的聚合運算 252
7.9 自訂狀態的流 255
7.10 自訂狀態的設計 260
7.11 Structured Streaming性能相關的參數 263

第8章 批次處理與數據倉庫 266
8.1 大數據與數據倉庫 266
8.2 數據倉庫的基本理論 267
8.2.1 維度和度量 268
8.2.2 事實表和維度表 268
8.2.3 維度的基數 269
8.2.4 Cube和Cuboid 269
8.2.5 星型模型與雪花模型 269
8.3 批次處理需求分析 271
8.4 數據倉庫架構 272
8.5 原型項目介紹與構建 277
8.6 數據倉庫工程結構 283
8.7 臨時數據層的設計與構建 285
8.8 源數據層的設計與構建 286
8.8.1 數據模型 287
8.8.2 建表並處理數據 288
8.8.3 SQL黏合與作業提交 293
8.8.4 增量導入與全量導入 298
8.8.5 源數據層的表分區 300
8.8.6 SRC層數據歸檔 300
8.9 明細數據層的設計與構建 301
8.9.1 數據模型 301
8.9.2 建表並處理數據 302
8.9.3 合併增量數據 305
8.9.4 SQL參數替換 307
8.10 匯總數據層的設計與構建 309
8.10.1 數據模型 309
8.10.2 建表並處理數據 312
8.10.3 構建維度模型 314
8.10.4 緩慢變化維度 318
8.10.5 2型SCD表 320
8.10.6 生成代理主鍵 328
8.10.7 運行示例 329
8.11 實現UDF 332

第9章 數據存儲 335
9.1 批次處理的數據存儲 335
9.2 NoSQL數據庫概覽 341
9.3 HBase與Cassandra 343
9.4 HBase的Rowkey設計 349
9.4.1 “熱點”問題與應對策略 349
9.4.2 定長處理 352
9.4.3 最佳實踐 352
9.5 探索HBase二級索引 356

第10章 作業調度 364
10.1 技術堆疊與選型 364
10.2 需求與概要設計 365
10.3 工作流的組織策略 366
10.4 工程結構 370
10.5 項目構建 372
10.6 實現工作流 375
10.7 實現coordinator 381
10.8 部署與提交工作流 385
10.9 作業依賴管理 389
10.9.1 Oozie的作業依賴管理 391
10.9.2 原型項目中的作業依賴 394

2008年,Hadoop成為Apache的頂級專案,以此為開端,大數據技術迎來了十多年的持續發展,其間隨著Spark的異軍突起,整個大數據生態圈又經歷了一次“裝備升級”,變得更加完善和強大。在這一進程中,企業數據平臺的設計理念也在不斷進化,從最初的“數據倉庫”到後來的“數據湖”,再到今天的“數據中台”,方法論革新的背後是大數據技術的強力支撐。今天,很多企業已經完成了早期對大數據技術的嘗試和探索轉而進入應用階段,在實際的工程建設中,IT團隊遇到了很多問題和挑戰,有的團隊在摸索中積累了一些有價值的經驗,有的則走了一些彎路,付出了或大或小的代價。

總的來說,大數據的整體架構和工程方案在業界還沒有錘煉到像Java社區的企業級應用那樣成熟,在Java社區不但有完備的架構理論和模型,更有基於這些理論沉澱下來的標準工程範本,以前有Appfuse,後來有Spring Boot,這些被稱為“腳手架”的原型工具極大地方便了Java的企業級應用開發,促進了行業技術架構和工程標準的統一。在大數據領域,開發者們也在迫切地尋求成熟的架構方案和類似於“腳手架”的原型項目幫助他們快速構建自己的企業數據平臺,本書就是為這一目標而寫作的。

作為本書的作者,我曾經參與過多個大數據平臺的設計和開發工作,在長期的工作中積累了一些值得分享的寶貴經驗。同時,作為一名堅持在一線編寫代碼的架構師,我還會在專案初期為團隊搭建工程原型,在經過多個項目的優化和提煉之後積累了一套成熟通用的原型方案,本書講解的原型系統正是由此而來的。它不僅僅是這本書的示例代碼,更是一個能應用於實際項目中的“腳手架”,其原始程式碼具有很高的參考性和可攜性,將虛擬的業務邏輯抽離之後能很容易地應用到實際專案中,以幫助團隊快速啟動開發工作。在本書中我會把大數據平臺的架構設計和原型系統的具體實現結合在一起講解,希望能幫助讀者有效地學習大數據平臺的設計方法和各項技術。

本書涵蓋大數據平臺建設的各個重要環節,包括基礎設施建設、數據採集、主數據管理、即時計算、批次處理與數據倉庫、數據存儲和作業調度等,每個環節獨立成章,每一章會介紹相應主題的架構方案和技術選型,然後結合原型項目講解具體的實現細節。由於大數據涉及的技術眾多,而本書討論的又是平臺級的架構和實現,無法就每一項技術都深入展開,所以本書的讀者需要具備一定的大數據知識和技術背景。如果你是一位架構師,這本書可以幫助你提升對大數據平臺的整體把控力;如果你是中高級開發人員,建議你選擇自己感興趣的章節深入學習原型項目代碼;如果你是企業的CIO或數據團隊的負責人,本書的第1、2、4章對於你定制企業數據戰略、規劃數據平臺藍圖及組建數據團隊都有重要的參考價值。

本書講解使用的原型專案已經在GitHub上開源(購買本書後可查看)。它是一個基於Maven構建的多模組專案,每個模組對應大數據平臺上的一個重要環節,同時對應本書的一個具體章節,但與很多電腦圖書不同的是,這些模組不是瑣碎示例代碼的集合,而是在一個統一業務背景下分工協作的標準專案,是一個完備的大數據平臺原型系統。

最後,給購買本書的讀者一條誠懇的建議:“Get your hands dirty!代碼先行!”這是能學到本書精髓最好的方法。
 


相關書籍