本書詳細介紹大數據環境下的常用的數據庫和相關工具,包括HBase、Hive、Impala、Spark、Spark SQL、鍵值數據庫和流式數據庫等,給出了詳細的工作機理和應用方法,并給出完整的實踐案例和代碼。
目 錄
第1章 大數據庫概述 1
1.1 傳統關系型數據庫面臨的問題 1
1.2 大數據庫技術 2
1.2.1 列式數據庫 2
1.2.2 內存數據庫 2
1.2.3 鍵值數據庫 3
1.2.4 流式數據庫 3
1.3 大數據SQL 3
1.4 當前主流大數據SQL簡介 4
1.4.1 Hive 4
1.4.2 Impala 5
1.4.3 Shark 6
1.4.4 Spark SQL 7
1.5 本章總結 8
習題 9
參考文獻 9
第2章 分布式數據庫HBase 10
2.1 HBase基礎 10
2.1.1 體系架構 10
2.1.2 數據模型 15
2.2 HBase操作簡介 17
2.2.1 HBase接口簡介 17
2.2.2 HBase Shell實戰 17
2.2.3 HBase API 20
2.3 HBase實戰 21
2.3.1 實戰HBase之綜例 21
2.3.2 實戰HBase之使用MapReduce構建索引 22
習題 26
參考文獻 27
第3章 數據倉庫工具Hive 28
3.1 Hive簡介 28
3.1.1 工作原理 28
3.1.2 體系架構 29
3.1.3 計算模型 30
3.1.4 Hive部署模式 31
3.2 Hive的使用 32
3.2.1 Hive的數據類型 32
3.2.2 Hive接口匯總 32
3.3 實戰Hive Shell 33
3.3.1 DDL操作 33
3.3.2 DML操作 34
3.3.3 SQL操作 34
3.4 實戰Hive之復雜語句 35
3.5 實戰Hive之綜合示例 37
3.6 實戰Hive API接口 38
3.6.1 UDF編程示例 38
3.6.2 UDAF編程示例 39
習題 40
參考文獻 41
第4章 大數據查詢系統Impala 42
4.1 Impala簡介 42
4.1.1 Impala的起源 42
4.1.2 Impala的特點 42
4.1.3 Impala 前輩及競爭對手 43
4.2 Impala工作原理 43
4.2.1 Impala 設計目標 44
4.2.2 Impala 服務器組件 44
4.2.3 Impala 編程特點 45
4.2.4 Impala在Hadoop生態圈中的生存之道 45
4.3 Impala環境搭建 46
4.3.1 Impala 安裝前的考慮 47
4.3.2 Impala 安裝途徑與安裝示范 50
4.4 Impala操作實例 61
4.4.1 Impala 基本操作 62
4.4.2 Impala 數據庫操作 62
習題 66
參考文獻 66
第5章 內存數據庫Spark 67
5.1 Spark簡介 67
5.1.1 Spark的引入 67
5.1.2 Spark生態系統BDAS 69
5.1.3 Spark系統架構 75
5.1.4 Spark工作流程 77
5.1.5 Spark應用案例 78
5.2 Spark計算模型 80
5.2.1 Spark程序模型 81
5.2.2 彈性分布式數據集(RDD) 81
5.2.3 Spark算子 84
5.3 Spark工作機制 85
5.3.1 Spark運行機制 85
5.3.2 Spark調度機制 87
5.3.3 Spark I/O機制 93
5.3.4 Spark通信機制 94
5.3.5 Spark容錯機制 97
5.3.6 Spark Shuffle機制 101
5.4 Scala快速入門 102
5.4.1 Scala解釋器 103
5.4.2 變量 103
5.4.3 函數 104
5.4.4 編寫Scala腳本 105
5.4.5 while 配合if實現循環 105
5.4.6 foreach和 for 來實現迭代 105
5.4.7 類型參數化數組 106
5.4.8 Lists 107
5.4.9 使用元組(Tuples) 108
5.4.10 Sets和Maps 108
5.4.11 函數編程風格 109
5.4.12 讀取文件 110
5.5 Spark環境部署 110
5.5.1 安裝與配置Spark 110
5.5.2 Intellij IDEA構建Spark開發環境 118
5.5.3 SBT構建Spark程序 121
5.5.4 編譯Spark程序 122
5.5.5 遠程調試Spark程序 123
5.5.6 生成Spark部署包 124
5.6 Spark 編程案例 124
5.6.1 WordCount 125
5.6.2 Top K 127
5.6.3 倒排索引 128
習題 130
參考文獻 131
第6章 Spark SQL 132
6.1 Spark SQL簡介 132
6.1.1 Spark SQL發展歷程 132
6.1.2 Spark SQL 架構 133
6.2 Spark SQL編程基礎 137
6.2.1 數據類型及表達式 137
6.2.2 Spark SQL查詢引擎Catalyst 138
6.2.3 SQL DSL API 142
6.2.4 Spark SQL ThriftServer和CLI 144
6.2.5 Spark SQL常用操作 146
6.3 Spark SQL實戰 151
6.3.1 Spark SQL開發環境搭建 151
6.3.2 Spark SQL使用入門 166
習題 173
參考文獻 173
第7章 鍵值數據庫 174
7.1 概述 174
7.1.1 鍵值存儲 174
7.1.2 鍵值數據庫 176
7.2 Redis 178
7.2.1 簡介 178
7.2.2 Redis數據服務及集群技術 180
7.2.3 Redis安裝 186
7.2.4 Redis數據操作 187
7.2.5 案例:網站訪問歷史記錄查詢 193
7.3 Memcached 198
7.3.1 簡介 198
7.3.2 Memcached緩存技術 198
7.3.3 Memcached安裝 200
7.3.4 Memcached數據操作 203
7.3.5 Memcached分布式技術 206
7.3.6 案例:論壇帖子信息緩存 207
7.4 典型應用及局限 208
7.4.1 典型應用 209
7.4.2 鍵值數據庫局限 211
習題 211
參考文獻 212
第8章 流式數據庫 213
8.1 流式計算模型 213
8.1.1 流式計算概念 213
8.1.2 流式計算數據特點 215
8.1.3 流式計算典型應用 216
8.1.4 典型流式計算平臺 216
8.2 流式計算關鍵技術 218
8.2.1 計算拓撲 218
8.2.2 消息傳遞 220
8.2.3 高可用性 222
8.2.4 語義保障 224
8.2.5 其他關鍵技術 225
8.3 Storm平臺 225
8.3.1 Storm簡介 225
8.3.2 Storm原理 227
8.3.3 Storm部署 237
8.3.4 案例:Maven環境下的Storm編程 242
8.4 Spark Streaming平臺 246
8.4.1 Spark Streaming簡介 247
8.4.2 Spark Streaming原理 248
8.4.3 案例:集群環境下的Spark Streaming編程 249
習題 261
參考文獻 262
第9章 數據應用托管平臺Docker 263
9.1 Docker技術簡介 263
9.1.1 Docker是什么 263
9.1.2 Docker的架構和流程 265
9.2 Docker的優勢和局限 266
9.2.1 Docker的優勢 266
9.2.2 Docker的局限性 268
9.3 基于Docker的大數據系統設計 270
9.3.1 分布式Docker網絡環境的搭建 270
9.3.2 Docker集群管理系統:Kubernetes 271
習題 277
參考文獻 278