第1章 大數(shù)據技術概述 1
1.1 大數(shù)據技術的發(fā)展背景 1
1.1.1 大數(shù)據技術的發(fā)展過程 2
1.1.2 大數(shù)據技術的影響 3
1.1.3 大數(shù)據發(fā)展的重大事件 5
1.2 大數(shù)據的概念、特征及意義 7
1.2.1 什么是大數(shù)據 7
1.2.2 大數(shù)據的特征 8
1.2.3 大數(shù)據來自哪兒 9
1.2.4 大數(shù)據的挑戰(zhàn) 10
1.2.5 研究大數(shù)據的意義 12
1.3 大數(shù)據的存儲與計算模式 13
1.3.1 大數(shù)據的存儲模式 13
1.3.2 大數(shù)據的計算模式 16
1.4 大數(shù)據的典型應用 18
1.4.1 智慧醫(yī)療的應用 19
1.4.2 智慧農業(yè)的應用 20
1.4.3 金融行業(yè)的應用 21
1.4.4 零售行業(yè)的應用 24
1.4.5 電子商務行業(yè)的應用 24
1.4.6 電子政務的應用 24
1.5 初識Hadoop大數(shù)據平臺 26
1.5.1 Hadoop的發(fā)展過程 26
1.5.2 Hadoop的優(yōu)勢 27
1.5.3 Hadoop的生態(tài)系統(tǒng) 28
1.5.4 Hadoop的版本 29
1.6 習題 32
第2章 Hadoop平臺的安裝與配置 33
2.1 安裝準備 33
2.1.1 硬件要求 33
2.1.2 安裝Linux 34
2.1.3 安裝Java 36
2.2 Hadoop的集群安裝 38
2.2.1 Hadoop的運行模式 38
2.2.2 Linux系統(tǒng)設置 39
2.2.3 SSH的安裝 41
2.2.4 Hadoop的安裝 42
2.2.5 Hadoop的配置 42
2.2.6 Hadoop的測試 49
2.3 Hadoop開發(fā)平臺的安裝 51
2.3.1 Eclipse的安裝 51
2.3.2 下載hadoop-eclipse-plugin插件 53
2.3.3 在Eclipse中配置Hadoop 53
2.4 習題 55
2.5 實訓 55
第3章 Hadoop分布式文件系統(tǒng) 57
3.1 HDFS概述 57
3.1.1 HDFS簡介 57
3.1.2 HDFS的基本概念 58
3.1.3 HDFS的特點 59
3.2 HDFS的體系結構 61
3.2.1 HDFS設計目標 61
3.2.2 HDFS的結構模型 61
3.2.3 HDFS文件的讀寫 63
3.2.4 HDFS的數(shù)據組織機制 63
3.2.5 HDFS的高可用性機制 66
3.3 HDFS Shell操作 68
3.3.1 Shell命令介紹 68
3.3.2 HDFS Shell幫助 68
3.3.3 文件操作命令 69
3.3.4 跨文件系統(tǒng)的交互操作命令 73
3.3.5 權限管理操作 74
3.4 習題 76
3.5 實訓 77
第4章 HDFS API編程 78
4.1 HDFS API概述 78
4.1.1 HDFS API簡介 78
4.1.2 HDFS Java API的一般用法 82
4.2 HDFS Java API客戶端編程 85
4.2.1 目錄與文件的創(chuàng)建 85
4.2.2 文件上傳與下載 87
4.2.3 數(shù)據流與文件讀寫操作 89
4.2.4 目錄與文件的重命名 93
4.2.5 目錄和文件的刪除 94
4.2.6 文件系統(tǒng)的狀態(tài)信息顯示 95
4.3 HDFS應用舉例——云盤系統(tǒng)的實現(xiàn) 99
4.3.1 云盤系統(tǒng)分析 99
4.3.2 云盤系統(tǒng)設計 99
4.3.3 云盤系統(tǒng)實現(xiàn) 100
4.4 習題 104
4.5 實訓 104
第5章 Hadoop分布式計算框架 106
5.1 MapReduce概述 106
5.1.1 為什么需要MapReduce 106
5.1.2 MapReduce的優(yōu)勢 110
5.1.3 MapReduce的基本概念 111
5.1.4 MapReduce框架 112
5.1.5 MapReduce發(fā)展 114
5.2 YARN運行機制 118
5.2.1 YARN組成結構 118
5.2.2 YARN通信協(xié)議 120
5.2.3 YARN工作流程 121
5.3 數(shù)據的混洗處理 123
5.3.1 map端 124
5.3.2 reduce端 125
5.4 作業(yè)的調度 125
5.4.1 FIFO調度器 126
5.4.2 Capacity調度器 126
5.4.3 Fair調度器 127
5.4.4 調度器的比較 128
5.5 任務的執(zhí)行 129
5.5.1 推測執(zhí)行 129
5.5.2 JVM重用 130
5.5.3 跳過壞記錄 130
5.6 失敗處理機制 130
5.6.1 任務運行失敗 130
5.6.2 ApplicationMaster運行失敗 131
5.6.3 NodeManager運行失敗 131
5.6.4 ResourceManager運行失敗 132
5.6.5 日志文件 133
5.7 MapReduce示例演示——WordCount 133
5.8 習題 136
第6章 MapReduce API編程 137
6.1 MapReduce API概述 137
6.1.1 MapReduce API簡介 137
6.1.2 MapReduce API編程思路 140
6.2 MapReduce的數(shù)據類型 146
6.2.1 序列化 146
6.2.2 Writable接口 146
6.2.3 Writable類 148
6.3 MapReduce的輸入 153
6.3.1 輸入分片 153
6.3.2 文件輸入 154
6.3.3 文本輸入 156
6.3.4 二進制輸入 157
6.3.5 多個輸入 158
6.3.6 數(shù)據庫輸入 159
6.4 MapReduce的輸出 159
6.4.1 文本輸出 160
6.4.2 二進制輸出 160
6.4.3 多個輸出 160
6.4.4 延遲輸出 161
6.4.5 數(shù)據庫輸出 161
6.5 MapReduce的任務 161
6.5.1 map任務 162
6.5.2 combine任務 163
6.5.3 partition任務 164
6.5.4 reduce任務 164
6.5.5 任務的配置與執(zhí)行 165
6.6 MapReduce應用舉例——倒排索引 168
6.6.1 功能介紹 168
6.6.2 準備數(shù)據 169
6.6.3 分析與設計 170
6.6.4 MapReduce編碼實現(xiàn) 171
6.6.5 測試結果 173
6.7 習題 174
6.8 實訓 175
第7章 MapReduce 高級編程 177
7.1 自定義數(shù)據類型 177
7.2 自定義輸入 輸出 183
7.2.1 RecordReader與RecordWriter 183
7.2.2 自定義輸入 188
7.2.3 自定義輸出 192
7.3 自定義Combiner Partitioner 194
7.3.1 自定義Combiner 194
7.3.2 自定義Partitioner 197
7.4 組合式計算作業(yè) 200
7.4.1 迭代式計算 200
7.4.2 依賴關系組合式計算 201
7.4.3 鏈式計算 202
7.5 MapReduce的特性 203
7.5.1 計數(shù)器 203
7.5.2 連接 210
7.6 MapReduce應用舉例——成績分析
系統(tǒng)的實現(xiàn) 215
7.6.1 成績分析系統(tǒng)解析 215
7.6.2 成績分析系統(tǒng)功能設計 216
7.6.3 成績分析系統(tǒng)實現(xiàn) 216
7.7 習題 225
7.8 實訓 225
第8章 Spark概述 226
8.1 環(huán)境搭建 226
8.1.1 Scala的下載和安裝 227
8.1.2 Spark的下載與安裝 228
8.2 Spark簡介 231
8.2.1 Spark的發(fā)展 231
8.2.2 Spark的特點 232
8.2.3 Spark與Hadoop的關系 233
8.2.4 Spark的企業(yè)應用 234
8.3 Spark大數(shù)據技術框架 235
8.3.1 Spark技術體系 235
8.3.2 四大組件概述 237
8.4 Spark 2.0 使用體驗 238
8.4.1 Spark入口 238
8.4.2 第一個Spark程序 239
8.5 Spark的數(shù)據模型 242
8.5.1 RDD介紹 242
8.5.2 RDD的處理過程 243
8.5.3 Transformation算子與使用 243
8.5.4 Action算子與使用 251
8.5.5 RDD分區(qū) 253
8.5.6 RDD的依賴關系 253
8.5.7 RDD的容錯支持 254
8.6 Spark任務調度 255
8.6.1 Spark應用程序部署 255
8.6.2 Spark任務的調度機制 255
8.7 習題 256
8.8 實訓 257
第9章 Spark Streaming編程 258
9.1 Spark Streaming介紹 258
9.2 Spark Streaming工作機制 259
9.3 Spark的DStream流 262
9.3.1 DStream轉換 262
9.3.2 Window操作 263
9.3.3 DStream輸出 264
9.3.4 持久化與序列化 265
9.3.5 設置檢測點 266
9.4 Spark Streaming案例 267
9.5 集群處理與性能 270
9.6 習題 272
9.7 實訓 272
第10章 Spark SQL編程 273
10.1 Spark SQL概述 273
10.2 DataFrame 275
10.2.1 DataSet與DataFrame 275
10.2.2 反射機制獲取RDD內
的Schema 276
10.2.3 編程接口指定Schema 277
10.3 數(shù)據源 278
10.3.1 一般load save方法 278
10.3.2 Parquet數(shù)據集 279
10.3.3 JSON數(shù)據集 280
10.3.4 JDBC數(shù)據集 281
10.3.5 DataFrame的案例 282
10.4 Spark Streaming與Spark SQL
綜合案例 285
10.5 習題 290
10.6 實訓 291
參考文獻 292