大數據開啟了一次重大的時代轉型,云計算為大數據提供了技術支撐。本書是大數據與云計算領域的入門教材,內容上盡量做到系統而完整地涵蓋大數據及云計算的多個方面,理論與實際相結合。在基礎理論方面介紹大數據計算范式、云計算、虛擬化技術與分布式一致性算法;并基于此,圍繞大數據的存儲、管理、處理和分析需求,講述大數據處理的開源平臺Hadoop生態(tài)系統,涉及分布式存儲系統與大數據計算框架。分布式存儲系統包括分布式文件系統HDFS、鍵值數據庫系統HBase與分布式數據倉庫Hive;大數據計算框架包括批處理/微批處理框架、流式處理框架及圖計算框架GraphX。此外,本書還介紹大數據計算理論及其應用實例,內容包括高維數據特性、亞線性算法設計理論與方法、亞線性算法應用。
更多科學出版社服務,請掃碼獲取。
L. H. Yang, M. L. Lee, W. Hsu. Efficient Mining of XML Query Patterns for Caching. Proceedings of the 29th VLDB Conference, pp.69-80, 2003.
目錄
第1章 引言 1
1.1 大數據概述 1
1.1.1 大數據的發(fā)展 1
1.1.2 大數據的定義及特征 2
1.1.3 大數據系統參考架構的設計與分析 5
1.1.4 數據科學與工程 10
1.1.5 大數據技術面臨的挑戰(zhàn) 12
1.2 云計算概述 13
1.2.1 云計算的五個基本特征 15
1.2.2 云計算的三種服務模式 16
1.2.3 云計算的四種部署類型 17
小結 19
習題 19
第2章 虛擬化技術 20
2.1 概述 20
2.2 虛擬化原理 21
2.2.1 計算機系統的分層抽象 21
2.2.2 虛擬化機制 23
2.3 系統虛擬化 26
2.3.1 虛擬機分類 31
2.3.2 虛擬機技術分類 36
2.4 存儲虛擬化 40
2.4.1 塊虛擬化 41
2.4.2 文件系統虛擬化 41
2.4.3 文件虛擬化 42
2.4.4 基于主機的存儲虛擬化 42
2.4.5 存儲設備/子系統虛擬化 42
2.4.6 基于網絡的存儲虛擬化 43
2.5 網絡虛擬化 43
小結 46
習題 46
第3章 Hadoop及其生態(tài)系統 47
3.1 概述 47
3.2 Hadoop 49
3.2.1 Hadoop 1 49
3.2.2 Hadoop 2 50
3.2.3 Hadoop 3 50
3.2.4 Hadoop的安裝 53
3.3 YARN——Hadoop的分布式操作系統 58
3.3.1 YARN的體系架構 59
3.3.2 資源管理器功能 61
3.3.3 應用主控器功能 63
3.3.4 節(jié)點管理器功能 63
3.3.5 調度策略 64
3.4 Hadoop生態(tài)系統 66
3.4.1 數據采集組件 67
3.4.2 數據存儲與管理組件 68
3.4.3 大數據批處理系統 69
3.4.4 大數據交互式分析系統 69
3.4.5 圖處理系統 70
3.4.6 大數據流處理系統 70
3.4.7 大數據流水線框架 70
3.4.8 其他組件及工具 70
小結 71
習題 71
第4章 分布式一致性算法 72
4.1 概述 72
4.2 兩/三階段提交協議 74
4.2.1 兩階段提交協議 74
4.2.2 三階段提交協議 77
4.3 Paxos算法 80
4.3.1 提案批準 82
4.3.2 決議獲知 87
4.3.3 活性 87
4.3.4 實現 88
4.4 CAP理論 89
4.4.1 ACID與BASE關系 90
4.4.2 CAP與ACID的關系 92
4.4.3 CAP和延遲的聯系 93
4.4.4 系統設計中CAP權衡 93
4.5 ZooKeeper 95
4.5.1 ZooKeeper分布式協調系統 95
4.5.2 ZooKeeper實現 100
4.5.3 ZooKeeper安裝與使用 103
小結 106
習題 106
第5章 分布式文件系統HDFS 107
5.1 概述 107
5.1.1 分布式文件系統的功能 107
5.1.2 分布式文件系統發(fā)展的三個階段 109
5.1.3 分布式文件系統架構的演化 110
5.2 Hadoop分布式文件系統 111
5.2.1 HDFS的設計目標 111
5.2.2 文件與塊 112
5.2.3 HDFS架構 112
5.2.4 HDFS數據副本放置策略 114
5.2.5 HDFS的讀寫機制 115
5.2.6 HDFS元數據的持久化 117
5.2.7 HDFS容錯機制 118
5.2.8 HDFS的使用 120
5.3 HDFS高可用性機制 121
5.4 HDFS聯邦 124
小結 126
習題 126
第6章 分布式鍵值數據庫系統HBase 127
6.1 分布式數據庫系統概述 127
6.1.1 數據管理發(fā)展簡史 127
6.1.2 數據庫系統擴展概述 128
6.1.3 分片 128
6.1.4 復制 129
6.2 HBase概述 130
6.2.1 HBase發(fā)展簡史 130
6.2.2 HBase和傳統關系數據庫系統的區(qū)別 130
6.2.3 HBase簡介 131
6.2.4 HBase適用場景 131
6.3 HBase體系結構 132
6.3.1 HBase架構圖 132
6.3.2 HBase分區(qū)組織結構 134
6.3.3 HBase預分區(qū)設計 135
6.3.4 HBase尋址機制 136
6.3.5 HBase內部讀寫機制 137
6.4 HBase一致性 138
6.4.1 強一致性HBase 138
6.4.2 HBase強一致性和HDFS多副本 139
6.5 HBase數據模型 139
6.5.1 HBase數據模型的基本概念 139
6.5.2 HBase邏輯模型 140
6.5.3 HBase物理模型 140
6.5.4 HBase數據庫設計 141
6.5.5 HBase數據表特點 142
6.6 HBase的安裝和使用 143
6.6.1 軟件與環(huán)境 143
6.6.2 HBase的安裝與配置 143
6.6.3 HBase數據表在Shell
終端下的操作 145
6.6.4 HBase客戶端API 145
6.6.5 HBase可用客戶端 146
小結 147
習題 147
第7章 數據倉庫系統Hive 148
7.1 數據倉庫概述 148
7.1.1 數據倉庫的定義和特征 148
7.1.2 數據倉庫的概念模型 150
7.1.3 數據倉庫的邏輯模型 151
7.1.4 數據倉庫的物理模型 154
7.1.5 數據倉庫設計 156
7.1.6 數據倉庫Hive簡介 156
7.2 數據倉庫Hive的體系結構 157
7.2.1 用戶接口及Thrift服務 158
7.2.2 數據倉庫Hive引擎
及元數據庫 158
7.2.3 數據存儲和計算 159
7.2.4 數據倉庫Hive的
總體工作流程 161
7.2.5 數據倉庫Hive的優(yōu)劣勢及應用場景 162
7.3 Hive的安裝 162
7.4 HQL 164
7.4.1 Hive數據定義 165
7.4.2 Hive數據操縱 169
7.4.3 Hive視圖 172
7.4.4 Hive索引 173
小結 173
習題 174
第8章 批處理計算框架MapReduce 175
8.1 MapReduce發(fā)展簡史 175
8.2 MapReduce計算模型 175
8.2.1 MapReduce簡介 175
8.2.2 map函數 176
8.2.3 reduce函數 178
8.3 MapReduce內部工作機制 183
8.3.1 MapReduce v1 183
8.3.2 MapReduce v2 186
8.4 MapReduce編程實例 189
小結 191
習題 191
第9章 微批量計算框架Spark 193
9.1 Spark概述 193
9.1.1 Spark生態(tài)系統 193
9.1.2 Spark運行框架 195
9.1.3 Spark的安裝與運行示例 196
9.2 RDD 197
9.2.1 RDD概述 197
9.2.2 RDD的運行原理 197
9.3 Spark的存儲 204
9.3.1 存儲層架構 204
9.3.2 混洗數據持久化 204
9.3.3 RDD持久化 205
9.3.4 廣播變量持久化 207
9.3.5 TachyonStore 207
9.4 Spark的作業(yè)提交與執(zhí)行 207
9.5 Spark運行模式 208
9.6 Spark的容錯原理 210
9.7 RDD編程實例 211
9.8 結構化API 212
小結 214
習題 215
第10章 流式計算框架 216
10.1 流式計算概述 216
10.1.1 概念 216
10.1.2 流式計算原理 217
10.1.3 應用場景 218
10.2 Storm 218
10.2.1 Storm的架構
與工作流程 219
10.2.2 拓撲運行原理 220
10.2.3 實踐 222
10.3 Spark Streaming 228
10.3.1 工作原理 228
10.3.2 基本概念 229
10.3.3 持久化、容錯和
性能調優(yōu) 233
10.3.4 程序設計實例 234
10.4 Flink 238
10.4.1 Flink的工作原理 238
10.4.2 Flink中對時間的處理 240
10.4.3 Flink的應用程序接口 241
10.4.4 程序設計實例 242
小結 245
習題 245
第11章 圖計算框架 246
11.1 圖計算概述 246
11.2 圖分割 247
11.3 圖計算模型 247
11.3.1 頂點中心計算模型 247
11.3.2 邊中心計算模型 252
11.3.3 路徑中心計算模型 253
11.3.4 子圖中心計算模型 253
11.4 GraphX計算框架 253
11.4.1 GraphX編程原理 254
11.4.2 GraphX編程實例 261
小結 263
習題 263
第12章 大數據計算理論及應用 264
12.1 概述 264
12.2 高維數據 264
12.2.1 認識高維球體 267
12.2.2 高維空間采樣 269
12.2.3 大數據歸約方法 272
12.3 亞線性計算理論 273
12.3.1 基本概念 273
12.3.2 不等式和界 278
12.4 亞線性算法應用 283
12.4.1 空間亞線性算法 283
12.4.2 時間亞線性算法 288
12.4.3 相似文檔歸類 290
小結 295
習題 295
參考文獻 296