內容簡介
“大數據”近年成為IT領域的熱點話題,人們每天都會通過網際網路、移動設備等產生大量數據。如何管理大數據、掌握大數據的核心技術、理解大數據相關的生態系統等,是作為大數據開發者必須學習和熟練掌握的。本系列書以“大數據開發者”應掌握的技術為主線,共分兩卷,以7個模組分別介紹如何管理大數據生態系統、如何存儲和處理數據、如何利用Hadoop工具、如何利用NoSQL與Hadoop協同工作,以及如何利用Hadoop商業發行版和管理工具。本系列書涵蓋了大數據開發工作的核心內容,全面且詳盡地涵蓋了大數據開發的各個領域。本書為第1卷,共4個模組,分別介紹大數據基礎知識、大數據生態系統的管理、HDFS和MapReduce以及Hadoop工具(如Hive、Pig和Oozie等)。本書適用於想成為大數據開發者以及所有對大數據開發感興趣的技術人員和決策者閱讀。
圖書目錄
模組1 大數據入門
第 1講 大數據簡介 3
1.1 什麼是大數據 4
1.1.1 大數據的優勢 5
1.1.2 挖掘各種大數據源 6
1.2 數據管理的歷史——大數據的演化 7
1.3 大數據的結構化 9
1.4 大數據要素 13
1.4.1 數據量 13
1.4.2 速度 14
1.4.3 多樣性 14
1.5 大數據在商務環境中的套用 14
1.6 大數據行業中的職業機會 16
1.6.1 職業機會 17
1.6.2 所需技能 17
1.6.3 大數據的未來 19
練習 20
備忘單 22
第 2講 大數據在商業上的套用 23
2.1 社交網路數據的重要性 24
2.2 金融欺詐和大數據 30
2.3 保險業的欺詐檢測 32
2.4 在零售業中套用大數據 36
練習 40
備忘單 42
第3講 處理大數據的技術 43
3.1 大數據的分散式和並行計算 44
3.1.1 並行計算技術 46
3.1.2 虛擬化及其對大數據的重要性 47
3.2 Hadoop簡介 47
3.3 雲計算和大數據 50
3.3.1 大數據計算的特性 50
3.3.2 雲部署模型 51
3.3.3 雲交付模型 52
3.3.4 大數據云 52
3.3.5 大數據云市場中的供應商 53
3.3.6 使用雲服務所存在的問題 54
3.4 大數據記憶體計算技術 54
練習 56
備忘單 58
第4講 了解Hadoop生態系統 59
4.1 Hadoop生態系統 60
4.2 用HDFS存儲數據 61
4.2.1 HDFS架構 62
4.2.2 HDFS的一些特殊功能 65
4.3 利用Hadoop MapReduce處理數據 65
4.3.1 MapReduce是如何工作的 66
4.3.2 MapReduce的優點和缺點 66
4.3.3 利用Hadoop YARN管理資源和套用 67
4.4 利用HBase存儲數據 68
4.5 使用Hive查詢大型資料庫 69
4.6 與Hadoop生態系統的互動 70
4.6.1 Pig和Pig Latin 70
4.6.2 Sqoop 71
4.6.3 Zookeeper 72
4.6.4 Flume 72
4.6.5 Oozie 73
練習 74
備忘單 76
第5講 MapReduce基礎 77
5.1 MapReduce的起源 78
5.2 MapReduce是如何工作的 79
5.3 MapReduce作業的最佳化技術 85
5.3.1 硬體/網路拓撲 85
5.3.2 同步 86
5.3.3 檔案系統 86
5.4 MapReduce的套用 86
5.5 HBase在大數據處理中的角色 87
5.6 利用Hive挖掘大數據 89
練習 91
備忘單 94
模組2 管理大數據生態系統
第 1講 大數據技術基礎 97
1.1 探索大數據棧 98
1.2 冗餘物理基礎設施層 99
1.2.1 物理冗餘網路 100
1.2.2 管理硬體:存儲和伺服器 101
1.2.3 基礎設施的操作 101
1.3 安全基礎設施層 101
1.4 接口層以及與應用程式和網際網路的雙向反饋 102
1.5 可運算元據庫層 103
1.6 組織數據服務層及工具 104
1.7 分析數據倉庫層 105
1.8 分析層 105
1.9 大數據套用層 106
1.10 虛擬化和大數據 107
1.11 虛擬化方法 108
1.11.1 伺服器虛擬化 109
1.11.2 應用程式虛擬化 109
1.11.3 網路虛擬化 110
1.11.4 處理器和記憶體虛擬化 110
1.11.5 數據和存儲虛擬化 111
1.11.6 用管理程式進行虛擬化管理 111
1.11.7 抽象與虛擬化 112
1.11.8 實施虛擬化來處理大數據 112
練習 114
備忘單 116
第 2講 大數據管理系統——資料庫和數據倉庫 117
2.1 RDBMS和大數據環境 118
2.2 非關係型資料庫 119
2.2.1 鍵值資料庫 120
2.2.2 文檔資料庫 122
2.2.3 列式資料庫 124
2.2.4 圖資料庫 125
2.2.5 空間資料庫 127
2.3 混合持久化 129
2.4 將大數據與傳統數據倉庫相集成 130
2.4.1 最佳化數據倉庫 130
2.4.2 大數據結構與數據倉庫的區別 130
2.5 大數據分析和數據倉庫 132
2.6 改變大數據時代的部署模式 134
2.6.1 設備模型 134
2.6.2 雲模型 135
練習 136
備忘單 138
第3講 分析與大數據 139
3.1 使用大數據以獲取結果 140
3.1.1 基本分析 142
3.1.2 高級分析 143
3.1.3 可操作性分析 144
3.1.4 貨幣化分析 145
3.2 是什麼構成了大數據 145
3.2.1 構成大數據的數據 145
3.2.2 大數據分析算法 146
3.2.3 大數據基礎設施支持 146
3.3 探索非結構化數據 148
3.4 理解文本分析 149
3.4.1 分析和提取技術 150
3.4.2 理解提取的信息 151
3.4.3 分類法 152
3.4.4 將結果與結構化數據放在一起 153
3.5 建立新的模式和方法以支持大數據 156
3.5.1 大數據分析的特徵 156
3.5.2 大數據分析的套用 157
3.5.3 大數據分析框架的特性 161
練習 163
備忘單 165
第4講 整合數據、實時數據和實施大數據 168
4.1 大數據分析的各個階段 169
4.1.1 探索階段 170
4.1.2 編纂階段 171
4.1.3 整合和合併階段 171
4.2 大數據集成的基礎 173
4.2.1 傳統ETL 174
4.2.2 ELT——提取、載入和轉換 175
4.2.3 優先處理大數據質量 175
4.2.4 數據性能分析工具 176
4.2.5 將Hadoop用作ETL 177
4.3 流數據和複雜的事件處理 177
4.3.1 流數據 178
4.3.2 複雜事件處理 181
4.3.3 區分CEP和流 182
4.3.4 流數據和CEP對業務的影響 183
4.4 使大數據成為運營流程的一部分 183
4.5 了解大數據的工作流 186
4.6 確保大數據有效性、準確性和時效性 187
4.6.1 數據的有效性和準確性 187
4.6.2 數據的時效性 187
練習 189
備忘單 191
第5講 大數據解決方案和動態數據 192
5.1 大數據作為企業戰略工具 193
5.1.1 階段1:利用數據做計畫 193
5.1.2 階段2:執行分析 194
5.1.3 階段3:檢查結果 194
5.1.4 階段4:根據計畫行事 194
5.2 實時分析:把新的維度添加到周期 194
5.2.1 階段5:實時監控 195
5.2.2 階段6:調整影響 195
5.2.3 階段7:實驗 195
5.3 對動態數據的需求 196
5.4 案例1:針對環境影響使用流數據 198
5.4.1 這是怎么做到的 198
5.4.2 利用感測器提供實時信息 198
5.4.3 利用實時數據進行研究 199
5.5 案例2:為了公共政策使用大數據 199
5.5.1 問題 200
5.5.2 使用流數據 200
5.6 案例3:在醫療保健行業使用流數據 200
5.6.1 問題 201
5.6.2 使用流數據 201
5.7 案例4:在能源行業使用流數據 201
5.7.1 利用流數據提高能源效率 201
5.7.2 流數據的使用推進了可替代能源的生產 202
5.8 案例5:用實時文本分析提高客戶體驗 202
5.9 案例6:在金融業使用實時數據 203
5.9.1 保險 204
5.9.2 銀行 204
5.9.3 信用卡公司 204
5.10 案例7:使用實時數據防止保險欺詐 205
練習 207
備忘單 210
模組3 存儲和處理數據:HDFS和MapReduce
第 1講 在Hadoop中存儲數據 213
1.1 HDFS 214
1.1.1 HDFS的架構 214
1.1.2 使用HDFS檔案 218
1.1.3 Hadoop特有的檔案類型 220
1.1.4 HDFS聯盟和高可用性 224
1.2 HBase 226
1.2.1 HBase的架構 226
1.2.2 HBase模式設計準則 231
1.3 HBase編程 232
1.4 為有效的數據存儲結合HDFS和HBase 237
1.5 為應用程式選擇恰當的Hadoop數據組織 237
1.5.1 數據被MapReduce獨占訪問時 237
1.5.2 創建新數據時 238
1.5.3 數據尺寸太大時 238
1.5.4 數據用於實時訪問時 238
練習 239
備忘單 241
第 2講 利用MapReduce處理數據 242
2.1 開始了解MapReduce 243
2.1.1 MapReduce框架 243
2.1.2 MapReduce執行管道 244
2.1.3 MapReduce的運行協調和任務管理 247
2.2 第 一個MapReduce應用程式 249
2.3 設計MapReduce的實現 257
2.3.1 使用MapReduce作為並行處理的框架 258
2.3.2 MapReduce的簡單數據處理 259
2.3.3 構建與MapReduce的連線 260
2.3.4 構建疊代的MapReduce應用程式 264
2.3.5 用還是不用MapReduce 268
2.3.6 常見的MapReduce設計提示 269
練習 271
備忘單 274
第3講 自定義MapReduce執行 275
3.1 用InputFormat控制MapReduce的執行 276
3.1.1 為計算密集型應用程式實施InputFormat 277
3.1.2 實現InputFormat控制map的數量 282
3.1.3 為多HBase表實現InputFormat 287
3.2 用你自定義RecordReader的方式讀取數據 290
3.3 用自定義OutputFormat組織輸出數據 292
3.4 自定義RecordWriter以你的方式寫數據 293
3.5 利用結合器最佳化MapReduce執行 295
3.6 用分區器來控制reducer的執行 298
練習 299
備忘單 302
第4講 測試和調試MapReduce應用程式 303
4.1 MapReduce應用程式的單元測試 304
4.1.1 測試mapper 306
4.1.2 測試reducer 307
4.1.3 集成測試 308
4.2 用Eclipse進行本地程式測試 310
4.3 利用日誌檔案做Hadoop測試 312
4.4 利用工作計數器進行報表度量 316
4.5 在MapReduce中的防禦式編程 318
練習 320
備忘單 322
第5講 實現MapReduce WordCount程式——案例學習 323
5.1 背景 324
5.1.1 句子層級的情感分析 325
5.1.2 情感詞法採集 325
5.1.3 文檔級別的情感分析 325
5.1.4 比較情感分析 325
5.1.5 基於外觀的情感分析 326
5.2 場景 326
5.3 數據解釋 326
5.4 方法論 326
5.5 方法 327
模組4 利用Hadoop工具Hive、Pig和Oozie提升效率
第 1講 探索Hive 343
1.1 介紹Hive 344
1.1.1 Hive數據單元 345
1.1.2 Hive架構 346
1.1.3 Hive元數據存儲 347
1.2 啟動Hive 347
1.2.1 Hive命令行界面 348
1.2.2 Hive變數 349
1.2.3 Hive屬性 349
1.2.4 Hive一次性命令 349
1.3 執行來自檔案的Hive查詢 350
1.3.1 shell執行 350
1.3.2 Hadoop dfs命令 350
1.3.3 Hive中的注釋 351
1.4 數據類型 351
1.4.1 基本數據類型 352
1.4.2 複雜數據類型 354
1.4.3 Hive內置運算符 355
1.5 Hive內置函式 356
1.6 壓縮的數據存儲 358
1.7 Hive數據定義語言 359
1.7.1 管理Hive中的資料庫 359
1.7.2 管理Hive中的表 360
1.8 Hive中的數據操作 364
1.8.1 將數據載入Hive表 364
1.8.2 將數據插入表 365
1.8.3 插入至本地檔案 367
練習 368
備忘單 370
第 2講 高級Hive查詢 371
2.1 HiveQL查詢 372
2.1.1 SELECT查詢 372
2.1.2 LIMIT子句 373
2.1.3 嵌入查詢 373
2.1.4 CASE…WHEN…THEN 373
2.1.5 LIKE和RLIKE 373
2.1.6 GROUP BY 374
2.1.7 HAVING 374
2.2 使用函式操作列值 374
2.2.1 內置函式 374
2.2.2 用戶定義函式 375
2.3 Hive中的連線 376
2.3.1 內連線 376
2.3.2 外連線 377
2.3.3 笛卡兒積連線 378
2.3.4 Map側的連線 379
2.3.5 ORDER BY 379
2.3.6 UNION ALL 379
2.4 Hive的實踐 380
2.4.1 使用分區 380
2.4.2 規範化 381
2.4.3 有效使用單次掃描 381
2.4.4 桶的使用 381
2.5 性能調優和查詢最佳化 382
2.5.1 EXPLAIN命令 383
2.5.2 LIMIT調優 387
2.6 各種執行類型 387
2.6.1 本地執行 387
2.6.2 並行執行 387
2.6.3 索引 388
2.6.4 預測執行 388
2.7 Hive檔案和記錄格式 388
2.7.1 文本檔案 388
2.7.2 序列檔案 389
2.7.3 RCFile 389
2.7.4 記錄格式(SerDe) 390
2.7.5 Regex SerDe 390
2.7.6 Avro SerDe 391
2.7.7 JSON SerDe 392
2.8 HiveThrift服務 393
2.8.1 啟動HiveThrift伺服器 393
2.8.2 使用JDBC的樣例HiveThrift客戶端 393
2.9 Hive中的安全 395
2.9.1 認證 395
2.9.2 授權 395
練習 397
備忘單 400
第3講 用Pig分析數據 402
3.1 介紹Pig 403
3.1.1 Pig架構 403
3.1.2 Pig Latin的優勢 404
3.2 安裝Pig 405
3.2.1 安裝Pig所需條件 405
3.2.2 下載Pig 405
3.2.3 構建Pig庫 406
3.3 Pig的屬性 406
3.4 運行Pig 407
3.5 Pig Latin應用程式流 408
3.6 開始利用Pig Latin 409
3.6.1 Pig Latin結構 410
3.6.2 Pig數據類型 411
3.6.3 Pig語法 412
3.7 Pig腳本接口 413
3.8 Pig Latin的腳本 415
3.8.1 用戶定義函式 415
3.8.2 參數替代 418
3.9 Pig中的關係型操作 419
3.9.1 FOREACH 419
3.9.2 FILTER 420
3.9.3 GROUP 421
3.9.4 ORDER BY 422
3.9.5 DISTINCT 423
3.9.6 JOIN 424
3.9.7 LIMIT 425
3.9.8 SAMPLE 426
練習 427
備忘單 430
第4講 Oozie對數據處理進行自動化 431
4.1 開始了解Oozie 432
4.2 Oozie工作流 433
4.2.1 在Oozie工作流中執行異步活動 436
4.2.2 實現Oozie工作流 437
4.3 Oozie協調器 443
4.4 Oozie套件 448
4.5 利用EL的Oozie參數化 451
4.5.1 工作流函式 451
4.5.2 協調器函式 452
4.5.3 套件函式 452
4.5.4 其他EL函式 452
4.6 Oozie作業執行模型 452
4.7 訪問Oozie 455
4.8 Oozie SLA 456
練習 460
備忘單 462
第5講 使用Oozie 464
5.1 業務場景:使用探測包驗證關於位置的信息 465
5.2 根據探測包設計位置驗證 466
5.3 設計Oozie工作流 467
5.4 實現Oozie工作流應用程式 469
5.4.1 實現數據準備工作流 469
5.4.2 實現考勤指數和集群簇的工作流 477
5.5 實現工作流的活動 479
5.5.1 從java行為中填充執行上下文 479
5.5.2 在Oozie工作流中使用MapReduce作業 480
5.6 實現Oozie協調器應用程式 483
5.7 實現Oozie套件應用程式 488
5.8 部署、測試和執行Oozie應用程式 489
5.8.1 使用Oozie CLI執行Oozie應用程式 490
5.8.2 將參數傳遞給Oozie作業 493
5.8.3 決定如何將參數傳遞給Oozie作業 495
練習 497
備忘單 499
顯示部分信息
作者簡介
本書作者均為國際知名IT培訓機構的知名講師,他們通過對技術、IT市場需求以及當今就業培訓方面的全球行業標準進行了廣泛並嚴格的調研之後,集結成這套“大數據開發者權威教程”。作者們的目標是通過這套書為有志於在大數據開發領域取得事業成功的人技術人員和決策者提供的技術和技能。譯者簡介顧晨,男,碩士、PMP、信息系統項目管理師。畢業於上海交通大學。曾獲邀參加舊金山的Google I/O大會。喜歡所有與編程相關的事物,擁有14年的編程經驗。對於大數據、SAP HANA資料庫和思科技術有著極其濃厚的興趣,是國內較早從事HANA資料庫研究的人員之一。先後錄製了MCSE、CCNP等多種教學視頻,在多家知名網站發布。精通C#、Java編程,目前正致力於人臉識別、室內定位和門店人流統計方面的研究。