《Hadoop海量數據處理:技術詳解與項目實戰》介紹了Hadoop技術的相關知識,並將理論知識與實際項目相結合。全書共分為三個部分:基礎篇、套用篇和總結篇。基礎篇詳細介紹了Hadoop、MapReduce、HDFS、Hive和Sqoop,並深入探討了Hadoop的運維和調優;套用篇則包含了一個具有代表性的完整的基於Hadoop的商業智慧型系統的設計和實現;結束篇對全書進行總結,並對技術發展做了展望。《Hadoop海量數據處理:技術詳解與項目實戰》結構針對學習曲線進行了最佳化,由淺至深,從理論基礎到項目實戰,適合Hadoop的初學者閱讀,也適合作為高等院校相關課程的教學參考書。
目錄
基礎篇:Hadoop基礎
第1章 緒論 2
1.1 Hadoop和雲計算 2
1.1.1 Hadoop的電梯演講 2
1.1.2 Hadoop生態圈 3
1.1.3 雲計算的定義 5
1.1.4 雲計算的類型 7
1.1.5 Hadoop和雲計算 8
1.2 Hadoop和大數據 9
1.2.1 大數據的定義 9
1.2.2 大數據的結構類型 11
1.2.3 大數據行業套用實例 12
1.2.4 Hadoop和大數據 13
1.2.5 其他大數據處理平台 15
1.3 數據挖掘和商業智慧型 16
1.3.1 數據挖掘的定義 16
1.3.2 數據倉庫 18
1.3.3 運算元據庫系統和數據倉庫系統的區別 19
1.3.4 為什麼需要分離的數據倉庫 19
1.3.5 商業智慧型 20
1.3.6 大數據時代的商業智慧型 21
第2章 環境準備 23
2.1 Hadoop的發行版本選擇 23
2.1.1 Apache Hadoop 23
2.1.2 CDH 23
2.1.3 Hadoop的版本 24
2.1.4 如何選擇Hadoop的版本 26
2.2 Hadoop架構 27
2.2.1 Hadoop HDFS架構 27
2.2.2 Hadoop MapReduce架構 28
2.2.3 Hadoop架構 29
2.3 安裝Hadoop 31
2.3.1 安裝運行環境 32
2.3.2 修改主機名和用戶名 37
2.3.3 配置靜態IP位址 38
2.3.4 配置SSH無密碼連線 39
2.3.5 安裝JDK 40
2.3.6 配置Hadoop 41
2.3.7 格式化HDFS 44
2.3.8 啟動Hadoop並驗證安裝 44
2.4 安裝Hive 46
2.4.1 安裝元資料庫 46
2.4.2 修改Hive配置檔案 47
2.4.3 驗證安裝 48
2.5 安裝Sqoop 48
2.6 Eclipse Hadoop外掛程式的安裝和使用 49
2.6.1 安裝並配置Eclipse Hadoop外掛程式 49
2.6.2 Eclipse外掛程式的使用 51
第3章 Hadoop的基石:HDFS 53
3.1 認識HDFS 53
3.1.1 HDFS的設計理念 55
3.1.2 HDFS的架構 55
3.1.3 HDFS容錯 59
3.2 HDFS讀取檔案和寫入檔案 60
3.2.1 塊的分布 60
3.2.2 數據讀取 61
3.2.3 寫入數據 62
3.2.4 數據完整性 64
3.3 如何訪問HDFS 65
3.3.1 命令行接口 65
3.3.2 Java API 68
3.3.3 其他常用的接口 78
3.3.4 Web UI 78
第4章 分而治之的智慧:MapReduce 80
4.1 認識MapReduce 80
4.1.1 MapReduce的編程思想 80
4.1.2 MapReduce運行環境 83
4.1.3 MapReduce作業和任務 85
4.1.4 MapReduce的計算資源劃分 86
4.1.5 MapReduce的局限性 87
4.2 Hello WordCount 87
4.2.1 WordCount的設計思路 87
4.2.2 編寫WordCount 88
4.2.3 運行程式 91
4.2.4 還能更快嗎 92
4.3 MapReduce的過程 93
4.3.1 從輸入到輸出 94
4.3.2 input 94
4.3.3 map及中間結果的輸出 96
4.3.4 shuffle 98
4.3.5 reduce及最後結果的輸出 99
4.3.6 sort 99
4.3.7 作業的進度組成 100
4.4 MapReduce的工作機制 101
4.4.1 作業提交 101
4.4.2 作業初始化 102
4.4.3 任務分配 102
4.4.4 任務執行 103
4.4.5 任務完成 103
4.4.6 推測執行 103
4.4.7 MapReduce容錯 104
4.5 MapReduce編程 105
4.5.1 Writable類 105
4.5.2 編寫Writable類 108
4.5.3 編寫Mapper類 109
4.5.4 編寫Reducer類 111
4.5.5 控制shuffle 112
4.5.6 控制sort 113
4.5.7 編寫main函式 115
4.6 MapReduce編程實例:連線 116
4.6.1 設計思路 116
4.6.2 編寫Mapper類 117
4.6.3 編寫Reducer類 118
4.6.4 編寫main函式 119
4.7 MapReduce編程實例:二次排序 120
4.7.1 設計思路 120
4.7.2 編寫Mapper類 121
4.7.3 編寫Partitioner類 121
4.7.4 編寫SortComparator類 122
4.7.5 編寫Reducer類 123
4.7.6 編寫main函式 123
4.8 MapReduce編程實例:全排序 125
4.8.1 設計思路 125
4.8.2 編寫代碼 127
第5章 SQL on Hadoop:Hive 129
5.1 認識Hive 129
5.1.1 從MapReduce到SQL 130
5.1.2 Hive架構 132
5.1.3 Hive與關係型資料庫的區別 134
5.1.4 Hive命令的使用 135
5.2 數據類型和存儲格式 137
5.2.1 基本數據類型 137
5.2.2 複雜數據類型 137
5.2.3 存儲格式 138
5.2.4 數據格式 139
5.3 HQL:數據定義 140
5.3.1 Hive中的資料庫 140
5.3.2 Hive中的表 142
5.3.3 創建表 142
5.3.4 管理表 144
5.3.5 外部表 144
5.3.6 分區表 145
5.3.7 刪除表 147
5.3.8 修改表 147
5.4 HQL:數據操作 148
5.4.1 裝載數據 148
5.4.2 通過查詢語句向表中插入數據 149
5.4.3 利用動態分區向表中插入數據 149
5.4.4 通過CTAS載入數據 150
5.4.5 導出數據 150
5.5 HQL:數據查詢 150
5.5.1 SELECT…FROM語句 151
5.5.2 WHERE語句 152
5.5.3 GROUP BY和HAVING語句 153
5.5.4JOIN語句 153
5.5.5 ORDER BY和SORT BY語句 156
5.5.6 DISTRIBUTE BY和SORTBY語句 157
5.5.7 CLUSTER BY 157
5.5.8 分桶和抽樣 157
5.5.9 UNION ALL 158
5.6 Hive函式 158
5.6.1 標準函式 158
5.6.2 聚合函式 158
5.6.3 表生成函式 158
5.7 Hive用戶自定義函式 159
5.7.1 UDF 159
5.7.2 UDAF 159
5.7.3 UDTF 161
5.7.4 運行 163
第6章 SQL to Hadoop : Sqoop 164
6.1 一個Sqoop示例 164
6.2 導入過程 166
6.3 導出過程 168
6.4 Sqoop的使用 169
6.4.1 codegen 170
6.4.2 create-hive-table 170
6.4.3 eval 171
6.4.4 export 171
6.4.5 help 172
6.4.6 import 172
6.4.7 import-all-tables 173
6.4.8 job 174
6.4.9 list-databases 174
6.4.10 list-tables 175
6.4.11 merge 175
6.4.12 metastore 176
6.4.13 version 176
第7章 Hadoop性能調優和運維 177
7.1 Hadoop客戶端 177
7.2 Hadoop性能調優 178
7.2.1 選擇合適的硬體 178
7.2.2 作業系統調優 180
7.2.3 JVM調優 181
7.2.4 Hadoop參數調優 181
7.3 Hive性能調優 187
7.3.1 JOIN最佳化 187
7.3.2 Reducer的數量 187
7.3.3 列裁剪 187
7.3.4 分區裁剪 188
7.3.5 GROUP BY最佳化 188
7.3.6 合併小檔案 189
7.3.7 MULTI-GROUP BY和MULTI-INSERT 189