1. 程式人生 > >離線和實時大資料開發實戰

離線和實時大資料開發實戰

離線和實時大資料開發實戰

目 錄

前言

第一篇 資料大圖和資料平臺大圖

第1章 資料大圖 2

1.1 資料流程 2

1.1.1 資料產生 3

1.1.2 資料採集和傳輸 5

1.1.3 資料儲存處理 6

1.1.4 資料應用 7

1.2 資料技術 8

1.2.1 資料採集傳輸主要技術 9

1.2.2 資料處理主要技術 10

1.2.3 資料儲存主要技術 12

1.2.4 資料應用主要技術 13

1.3 資料相關從業者和角色 14

1.3.1 資料平臺開發、運維工程師 14

1.3.2 資料開發、運維工程師 15

1.3.3 資料分析工程師 15

1.3.4 演算法工程師 16

1.3.5 業務人員 16

1.4 本章小結 17

第2章 資料平臺大圖 18

2.1 離線資料平臺的架構、技術和設計 19

2.1.1 離線資料平臺的整體架構 19

2.1.2 資料倉庫技術 20

2.1.3 資料倉庫建模技術 23

2.1.4 資料倉庫邏輯架構設計 26

2.2 實時資料平臺的架構、技術和設計 27

2.2.1 實時資料平臺的整體架構 28

2.2.2 流計算技術 29

2.2.3 主要流計算開源框架 29

2.3 資料管理 32

2.3.1 資料探查 32

2.3.2 資料整合 33

2.3.3 資料質量 33

2.3.4 資料遮蔽 34

2.4 本章小結 35

第二篇 離線資料開發:大資料開發的主戰場

第3章 Hadoop原理實踐 38

3.1 開啟大資料時代的Hadoop 38

3.2 HDFS和MapReduce優缺點分析 40

3.2.1 HDFS 41

3.2.2 MapReduce 42

3.3 HDFS和MapReduce基本架構 43

3.4 MapReduce內部原理實踐 46

3.4.1 MapReduce邏輯開發 46

3.4.2 MapReduce任務提交詳解 47

3.4.3 MapReduce內部執行原理詳解 48

3.5 本章小結 52

第4章 Hive原理實踐 53

4.1 離線大資料處理的主要技術:Hive 53

4.1.1 Hive出現背景 53

4.1.2 Hive基本架構 55

4.2 Hive SQL 56

4.2.1 Hive 關鍵概念 57

4.2.2 Hive 資料庫 59

4.2.3 Hive 表DDL 60

4.2.4 Hive表DML 63

4.3 Hive SQL執行原理圖解 65

4.3.1 select 語句執行圖解 66

4.3.2 group by語句執行圖解 67

4.3.3 join語句執行圖解 69

4.4 Hive函式 73

4.5 其他SQL on Hadoop技術 74

4.6 本章小結 76

第5章 Hive優化實踐 77

5.1 離線資料處理的主要挑戰:資料傾斜 77

5.2 Hive優化 79

5.3 join無關的優化 79

5.3.1 group by引起的傾斜優化 79

5.3.2 count distinct優化 80

5.4 大表join小表優化 80

5.5 大表join大表優化 82

5.5.1 問題場景 82

5.5.2 方案1:轉化為mapjoin 83

5.5.3 方案2:join時用case when語句 84

5.5.4 方案3:倍數B表,再取模join 84

5.5.5 方案4:動態一分為二 87

5.6 本章小結 89

第6章 維度建模技術實踐 90

6.1 大資料建模的主要技術:維度建模 90

6.1.1 維度建模關鍵概念 91

6.1.2 維度建模一般過程 95

6.2 維度表設計 96

6.2.1 維度變化 96

6.2.2 維度層次 99

6.2.3 維度一致性 100

6.2.4 維度整合和拆分 101

6.2.5 維度其他 102

6.3 深入事實表 104

6.3.1 事務事實表 104

6.3.2 快照事實表 106

6.3.3 累計快照事實表 107

6.3.4 無事實的事實表 108

6.3.5 彙總的事實表 108

6.4 大資料的維度建模實踐 109

6.4.1 事實表 109

6.4.2 維度表 110

6.5 本章小結 110

第7章 Hadoop資料倉庫開發實戰 111

7.1 業務需求 112

7.2 Hadoop資料倉庫架構設計 113

7.3 Hadoop資料倉庫規範設計 114

7.3.1 命名規範 115

7.3.2 開發規範 115

7.3.3 流程規範 116

7.4 FutureRetailer資料倉庫構建實踐 118

7.4.1 商品維度表 118

7.4.2 銷售事實表 120

7.5 資料平臺新架構——資料湖 121

7.6 本章小結 123

第三篇 實時資料開發:大資料開發的未來

第8章 Storm流計算開發 127

8.1 流計算技術的鼻祖:Storm技術 128

8.1.1 Storm基本架構 129

8.1.2 Storm關鍵概念 130

8.1.3 Storm併發 132

8.1.4 Storm核心類和介面 133

8.2 Storm實時開發示例 133

8.2.1 語句生成spout 134

8.2.2 語句分割bolt 135

8.2.3 單詞計數bolt 136

8.2.4 上報bolt 136

8.2.5 單詞計數topology 137

8.2.6 單詞計數併發配置 139

8.3 Storm高階原語Trident 142

8.3.1 Trident引入背景 142

8.3.2 Trident基本思路 142

8.3.3 Trident流操作 143

8.3.4 Trident的實時開發例項 145

8.4 Storm關鍵技術 147

8.4.1 spout的可靠性 147

8.4.2 bolt的可靠性 148

8.4.3 Storm反壓機制 149

8.5 本章小結 150

第9章 Spark Streaming流計算開發 151

9.1 Spark生態和核心概念 151

9.1.1 Spark概覽 151

9.1.2 Spark核心概念 153

9.1.3 Spark生態圈 157

9.2 Spark生態的流計算技術:Spark Streaming 158

9.2.1 Spark Streaming基本原理 159

9.2.2 Spark Streaming核心API 159

9.3 Spark Streaming的實時開發示例 161

9.4 Spark Streaming調優實踐 162

9.5 Spark Streaming關鍵技術 164

9.5.1 Spark Streaming可靠性語義 164

9.5.2 Spark Streaming反壓機制 165

9.6 本章小結 166

第10章 Flink流計算開發 167

10.1 流計算技術新貴:Flink 167

10.1.1 Flink技術棧 168

10.1.2 Flink關鍵概念和基本原理 169

10.2 Flink API 172

10.2.1 API概覽 172

10.2.2 DataStream API 173

10.3 Flink實時開發示例 180

10.4 Flink關鍵技術詳解 182

10.4.1 容錯機制 182

10.4.2 水位線 184

10.4.3 視窗機制 185

10.4.4 撤回 187

10.4.5 反壓機制 187

10.5 本章小結 188

第11章 Beam技術 189

11.1 意圖一統流計算的Beam 190

11.1.1 Beam的產生背景 190

11.1.2 Beam技術 191

11.2 Beam技術核心:Beam Model 193

11.3 Beam SDK 196

11.3.1 關鍵概念 196

11.3.2 Beam SDK 197

11.4 Beam視窗詳解 202

11.4.1 視窗基礎 202

11.4.2 水位線與延遲資料 203

11.4.3 觸發器 204

11.5 本章小結 205

第12章 Stream SQL實時開發實戰 206

12.1 流計算SQL原理和架構 207

12.2 流計算SQL:未來主要的實時開發技術 208

12.3 Stream SQL 209

12.3.1 Stream SQL源表 209

12.3.2 Stream SQL結果表 209

12.3.3 Stream SQL維度表 210

12.3.4 Stream SQL臨時表 211

12.3.5 Stream SQL DML 211

12.4 Stream SQL的實時開發實戰 212

12.4.1 select操作 212

12.4.2 join操作 214

12.4.3 聚合操作 218

12.5 撤回機制 221

12.6 本章小結 222

參考文獻 224

 

221