內容簡介
本書基於作者多年的教學與實踐經驗編寫,重點介紹
阿里雲大數據體系的核心原理與架構,內容涉及開發、運維、管理與架構。全書分為4篇,共13章。
圖書目錄
第1篇 大數據技術基礎
第1章 大數據核心理論基礎與架構 2
1.1 什麼是大數據 2
1.1.1 大數據的基本概念和特性 2
1.1.2 大數據平台的核心問題——存儲與計算 4
1.2 大數據的理論基礎 6
1.2.1 大數據的分散式存儲 6
1.2.2 大數據的分散式計算 9
1.3 大數據技術與數據倉庫 12
1.3.1 什麼是數據倉庫 12
1.3.2 基於大數據技術實現的數據倉庫 13
1.4 基於開源大數據組件的大數據平台架構 15
1.4.1 數據源層 16
1.4.2 數據採集層 16
1.4.3 大數據平台層 16
1.4.4 數據倉庫層 17
1.4.5 套用層 17
1.5 自建大數據平台與租賃大數據平台 17
1.5.1 為什麼推薦使用租賃的大數據平台 17
1.5.2 為什麼選擇阿里雲大數據平台 18
1.6 阿里雲大數據生態圈體系 18
1.6.1 阿里雲大數據基礎組件 19
1.6.2 基於阿里雲大數據基礎組件的數加平台 24
第2章 阿里雲大數據技術基礎——開源大數據技術生態圈 27
2.1 開源大數據技術生態圈簡介 27
2.1.1 面向離線數據的存儲計算引擎Hadoop生態圈體系及其組件27
2.1.2 面向批處理的大數據計算引擎Spark生態圈體系及其組件 29
2.1.3 面向流處理的大數據計算引擎Flink生態圈體系及其組件 30
2.2 面向離線數據的存儲計算引擎Hadoop快速上手 32
2.2.1 【實戰】部署Hadoop集群 33
2.2.2 【實戰】使用Hadoop檔案系統HDFS存儲數據 38
2.2.3 【實戰】使用Hadoop離線計算引擎MapReduce處理數據 46
2.3 面向批處理的大數據計算引擎Spark快速上手 49
2.3.1 【實戰】部署Spark集群 49
2.3.2 【實戰】執行Spark離線計算任務 51
2.3.3 【實戰】執行Spark實時計算任務 57
2.3.4 【實戰】使用Spark SQL處理結構化數據 60
2.4 面向流處理的大數據計算引擎Flink快速上手 61
2.4.1 【實戰】部署Flink集群 62
2.4.2 【實戰】執行Flink離線計算任務 63
2.4.3 【實戰】執行Flink實時計算任務 64
2.4.4 【實戰】使用Flink SQL處理結構化數據 66
2.5 大數據體系的單點故障問題 66
第2篇 阿里雲大數據的離線計算服務
第3章 面向離線數據存儲與計算的MaxCompute基礎 70
3.1 MaxCompute簡介 70
3.1.1 什麼是MaxCompute 70
3.1.2 MaxCompute的特點 71
3.2 初識MaxCompute 71
3.2.1 MaxCompute的架構 71
3.2.2 MaxCompute的核心概念 74
3.2.3 MaxCompute的數據類型 76
3.3 使用MaxCompute的準備工作 78
3.3.1 【實戰】創建阿里雲賬號 79
3.3.2 【實戰】開通MaxCompute服務 82
3.3.3 【實戰】創建項目 83
3.3.4 配置MaxCompute客戶端 85
3.4 MaxCompute快速上手 93
3.4.1 【實戰】使用命令行客戶端 93
3.4.2 【實戰】執行MapReduce任務 99
3.4.3 【實戰】執行Spark任務 101
3.5 基於Tunnel的數據上傳與下載 102
3.5.1 Tunnel簡介 102
3.5.2 【實戰】使用Tunnel的命令行工具 103
3.5.3 【實戰】使用Tunnel的SDK 107
第4章 處理結構化數據——基於MaxCompute SQL 112
4.1 MaxCompute SQL簡介 112
4.1.1 MaxCompute SQL與其他SQL的差異 112
4.1.2 MaxCompute SQL的數據類型 114
4.1.3 MaxCompute SQL的數據類型轉換 115
4.2 使用MaxCompute SQL 119
4.2.1 【實戰】使用DDL語句119
4.2.2 【實戰】使用DML語句 135
4.2.3 【實戰】使用DQL語句140
4.2.4 【實戰】使用MaxCompute SQL的增強語法CTE 143
4.3 使用MaxCompute SQL的內建函式 145
4.3.1 【實戰】日期函式 145
4.3.2 【實戰】視窗函式 148
4.3.3 【實戰】聚合函式 152
4.3.4 【實戰】條件判斷函式 152
4.3.5 數學函式和字元串函式 154
4.4 在MaxCompute中自定義SQL 155
4.4.1 【實戰】UDF 155
4.4.2 【實戰】UDT 157
4.4.3 UDJ 158
第5章 處理離線數據——基於MaxCompute MapReduce159
5.1 MaxCompute MapReduce簡介 159
5.1.1 MaxCompute MapReduce的處理流程 159
5.1.2 MaxCompute MapReduce的使用限制 160
5.2 開發WordCount單詞計數程式 161
5.2.1 WordCount數據處理的流程 162
5.2.2 MaxCompute MapReduce的編程接口 163
5.2.3 【實戰】開發WordCount程式 166
5.3 MaxCompute MapReduce的高級特性 169
5.3.1 【實戰】實現數據排序 170
5.3.2 【實戰】實現數據二次排序 173
5.3.3 【實戰】使用過濾模式MapOnly 177
5.3.4 【實戰】使用Join實現多表連線179
5.3.5 【實戰】使用計數器Counter 183
5.3.6 【實戰】使用Unique實現數據去重 187
5.3.7 【實戰】使用項目空間資源 193
第6章 處理離線數據——基於MaxCompute Spark 196
6.1 MaxCompute Spark基礎 196
6.1.1 MaxCompute Spark的系統結構 196
6.1.2 MaxCompute Spark的使用限制 197
6.1.3 使用spark-shell 198
6.2 MaxCompute Spark的核心數據模型RDD 199
6.2.1 什麼是RDD 200
6.2.2 熟悉RDD的運算元 202
6.2.3 【實戰】RDD的快取機制 209
6.2.4 【實戰】RDD的檢查點機制 211
6.2.5 RDD的依賴關係和任務執行的階段 212
6.3 在MaxCompute Spark中使用SQL處理數據214
6.3.1 Spark SQL的特點 214
6.3.2 Spark SQL的數據模型 215
6.3.3 【實戰】創建DataFrame 215
6.3.4 【實戰】使用DataFrame處理數據 218
6.3.5 【實戰】創建視圖 220
6.4 【實戰】MaxCompute Spark開發案例 222
6.4.1 開發Java版本的單詞計數程式WordCount 222
6.4.2 開發Scala版本的單詞計數程式WordCount 224
6.5 診斷MaxCompute Spark作業225
6.5.1 使用Logview工具診斷作業226
6.5.2 使用Spark Web UI診斷作業 227
第7章 處理圖數據——基於MaxCompute Graph 229
7.1 MaxCompute Graph基礎229
7.1.1 MaxCompute Graph的基本概念 230
7.1.2 MaxCompute Graph的數據結構 230
7.1.3 MaxCompute Graph的程式邏輯 231
7.1.4 MaxCompute Graph的Aggregator機制 233
7.1.5 MaxCompute Graph的使用限制 236
7.2 使用MaxCompute Graph計算單源最短距離 236
7.2.1 單源最短距離算法簡介 236
7.2.2 【實戰】開發並運行單源最短距離算法程式 239
第8章 MaxCompute的許可權與安全 245
8.1 MaxCompute的許可權與安全簡介 245
8.2 管理MaxCompute的用戶 246
8.3 管理MaxCompute的許可權 247
8.3.1 授權的三要素 248
8.3.2 項目空間內的許可權 249
8.3.3 【實戰】使用ACL授權 250
8.3.4 【實戰】使用Policy授權 252
8.3.5 ACL授權與Policy授權的區別 256
8.4 管理MaxCompute的角色 257
8.4.1 角色的作用 257
8.4.2 內置角色和自定義角色 258
8.4.3 【實戰】使用MaxCompute的角色 259
8.5 LabelSecurity 260
8.5.1 LabelSecurity簡介260
8.5.2 【實戰】使用LabelSecurity 260
8.5.3 【實戰】LabelSecurity的套用場景示例 264
8.6 使用Package實現跨項目空間的資源分享 265
8.6.1 什麼是跨項目空間的資源分享 265
8.6.2 Package的創建與使用 266
8.6.3 【實戰】Package的套用場景示例 268
8.7 項目空間的數據保護 270
8.7.1 MaxCompute的數據保護機制 271
8.7.2 數據保護機制下數據的流動 271
第3篇 阿里雲大數據的實時計算服務
第9章 訊息佇列Kafka版 274
9.1 訊息佇列基礎 274
9.1.1 訊息佇列概述 274
9.1.2 訊息佇列的分類 275
9.2 訊息佇列Kafka版的體系架構 278
9.2.1 訊息伺服器Broker 279
9.2.2 主題、分區與副本 279
9.2.3 訊息的生產者 281
9.2.4 訊息的消費者 283
9.3 快速上手訊息佇列Kafka版 285
9.3.1 快速入門操作流程 285
9.3.2 【實戰】獲取訪問授權 286
9.3.3 【實戰】購買和部署 287
9.3.4 【實戰】創建資源 292
9.3.5 【實戰】使用管理控制台收發訊息 294
9.3.6 【實戰】實例運行健康自檢指南 296
9.4 訊息佇列Kafka版套用開發 298
9.4.1 【實戰】開發基本的訊息生產者與消費者 298
9.4.2 【實戰】傳送與接收自定義訊息 304
第10章 實時計算Flink版 313
10.1 實時計算Flink版基礎 313
10.1.1 什麼是實時計算Flink版 313
10.1.2 實時計算Flink版的套用場景 314
10.1.3 【實戰】快速上手實時計算Flink版 317
10.2 批處理開發——基於實時計算引擎FlinkDataset 325
10.2.1 【實戰】使用map、flatMap與mapPartition運算元 326
10.2.2 【實戰】使用filter與distinct運算元 330
10.2.3 【實戰】使用join運算元 331
10.2.4 【實戰】使用cross運算元 333
10.2.5 【實戰】使用First-N運算元 334
10.2.6 【實戰】使用外連線操作 335
10.3 流處理開發——基於實時計算引擎FlinkDatastream 338
10.3.1 【實戰】開發單並行度的數據源 339
10.3.2 【實戰】使用union運算元 339
10.3.3 【實戰】使用connect運算元341
10.4 SQL與Table開發——基於實時計算引擎Flink Table&SQL 342
10.4.1 【實戰】開發Flink Table程式 343
10.4.2 【實戰】開發Flink SQL程式 347
10.5 實時計算Flink版的高級特性 352
10.5.1 檢查點設定 352
10.5.2 重啟策略 354
10.5.3 分散式快取 354
10.5.4 累加器 356
第4篇 阿里雲大數據增值服務——數加平台
第11章 阿里雲大數據集成開發平台DataWorks 362
11.1 DataWorks基礎 362
11.1.1 DataWorks功能架構 362
11.1.2 DataWorks的基本概念 369
11.1.3 DataWorks中的角色 371
11.2 DataWorks中的數據集成 371
11.2.1 離線數據集成 372
11.2.2 實時數據集成 373
11.2.3 數據同步和數據同步作業 374
11.3 【實戰】DataWorks項目開發案例 375
11.3.1 準備項目開發環境 375
11.3.2 準備測試數據 378
11.3.3 開發業務流程 384
11.3.4 提交業務流程 390
第12章 數據可視化分析平台Quick BI 393
12.1 Quick BI簡介 393
12.1.1 什麼是Quick BI 393
12.1.2 Quick BI的基本對象 394
12.1.3 Quick BI的體系架構 397
12.1.4 Quick BI的套用場景 399
12.2 【實戰】使用數據可視化分析平台Quick BI 400
12.2.1 項目背景與需求 400
12.2.2 連線數據源 400
12.2.3 數據建模 402
12.2.4 數據可視化分析 405
12.2.5 發布共享儀錶板 414
第13章 機器學習平台PAI 416
13.1 機器學習基礎知識416
13.1.1 什麼是機器學習 416
13.1.2 機器學習的常見算法 417
13.2 機器學習平台PAI基礎知識 417
13.2.1 初識機器學習平台PAI 417
13.2.2 PAI的架構 418
13.2.3 PAI的功能特性 419
13.2.4 PAI的基本概念 419
13.3 使用機器學習平台PAI實現智慧型推薦 421
13.3.1 使用協同過濾算法實現商品推薦 421
13.3.2 使用ALS算法實現商品推薦 427
趙渝強,近20年IT行業從業經歷,清華大學計算機軟體工程專業畢業,京東大學大數據學院院長,Oracle中國有限公司高級技術顧問,華為認證講師。曾在BEA、甲骨文、摩托羅拉等世界500強公司擔任高級軟體架構師或諮詢顧問等要職,精通大數據、資料庫、中間件技術和Java技術。