關于我們
書單推薦
新書推薦
|
Hadoop海量數(shù)據(jù)處理 技術詳解與項目實戰(zhàn)(第2版)
本書介紹了Hadoop技術的相關知識,并將理論知識與實際項目相結合。全書共分為三個部分:基礎篇、應用篇和總結篇。基礎篇詳細介紹了Hadoop、YARN、MapReduce、HDFS、Hive、Sqoop和HBase,并深入探討了Hadoop的運維和調優(yōu);應用篇則包含了一個具有代表性的完整的基于Hadoop的商業(yè)智能系統(tǒng)的設計和實現(xiàn);結束篇對全書進行總結,并對技術發(fā)展做了展望。
Hadoop是目前受關注的大數(shù)據(jù)處理平臺和解決方案,并且已經廣泛應用于生產環(huán)境。本書基于新的Hadoop(CDH5,Apache Hadoop 2.6)版本介紹Hadoop技術的相關知識,不但詳細介紹了Hadoop、HDFS、YARN、MapReduce、Hive、Sqoop和HBase等,還深入探討了Hadoop、HBase的運維和性能調優(yōu),并包含了一個具有代表性的完整的基于Hadoop的商業(yè)智能系統(tǒng)的設計和實現(xiàn)。
本書的大特點是面向實踐;A篇介紹Hadoop及相關組件的同時,包含了大量動手實例,而應用篇包含的基于Hadoop的完整實例脫胎于生產環(huán)境的真實項目。在應用篇中,讀者不僅能夠通過項目實戰(zhàn)鞏固基礎篇的學習效果,還能學習商業(yè)智能系統(tǒng)的開發(fā)過程。 本書由淺至深,從理論基礎到項目實戰(zhàn),適合Hadoop的初學者閱讀,也可以作為高等院校相關課程的教學參考書。 本書主要內容 ? 包含了Hadoop新版本的幾乎所有主要特性,是Hadoop目前成熟的形態(tài)。 ? 深入介紹了NoSQL架構模式、HBase的架構和實現(xiàn),以及HBase的高級特性。 ? 深入介紹了統(tǒng)一資源管理和調度平臺的范型和YARN實現(xiàn)。 ? 深入介紹了Hadoop、HBase性能調優(yōu),滿足海量數(shù)據(jù)處理的需求。 ? 包含了一個完整的項目實戰(zhàn),從需求定義、系統(tǒng)設計和架構后到代碼實現(xiàn)。 ? 包含了一個機器學習算法應用實戰(zhàn),利用Hadoop進行大數(shù)據(jù)挖掘,從數(shù)據(jù)中尋找模式。
范東來,北京航空航天大學碩士,技術圖書作者和譯者,著有《Hadoop海量數(shù)據(jù)處理》(該書臺灣繁體字版為《Hadoop:BigData技術詳解與專案實作》),譯有《解讀NoSQL》。BBD(數(shù)聯(lián)銘品)大數(shù)據(jù)技術部負責人,大數(shù)據(jù)平臺架構師,極客學院布道師。研究方向:并行圖挖掘、去中心化應用。
基礎篇:Hadoop基礎
第1章 緒論 2 1.1 Hadoop和云計算 2 1.1.1 Hadoop的電梯演講 2 1.1.2 Hadoop生態(tài)圈 3 1.1.3 云計算的定義 6 1.1.4 云計算的類型 7 1.1.5 Hadoop和云計算 8 1.2 Hadoop和大數(shù)據(jù) 9 1.2.1 大數(shù)據(jù)的定義 9 1.2.2 大數(shù)據(jù)的結構類型 10 1.2.3 大數(shù)據(jù)行業(yè)應用實例 12 1.2.4 Hadoop和大數(shù)據(jù) 13 1.2.5 其他大數(shù)據(jù)處理平臺 14 1.3 數(shù)據(jù)挖掘和商業(yè)智能 15 1.3.1 數(shù)據(jù)挖掘的定義 15 1.3.2 數(shù)據(jù)倉庫 17 1.3.3 操作數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)倉庫系統(tǒng)的區(qū)別 18 1.3.4 為什么需要分離的數(shù)據(jù)倉庫 19 1.3.5 商業(yè)智能 19 1.3.6 大數(shù)據(jù)時代的商業(yè)智能 20 1.4 小結 21 第2章 環(huán)境準備 22 2.1 Hadoop的發(fā)行版本選擇 22 2.1.1 Apache Hadoop 22 2.1.2 CDH 22 2.1.3 Hadoop的版本 23 2.1.4 如何選擇Hadoop的版本 25 2.2 Hadoop架構 26 2.2.1 Hadoop HDFS架構 27 2.2.2 YARN架構 28 2.2.3 Hadoop架構 28 2.3 安裝Hadoop 29 2.3.1 安裝運行環(huán)境 30 2.3.2 修改主機名和用戶名 36 2.3.3 配置靜態(tài)IP地址 36 2.3.4 配置SSH無密碼連接 37 2.3.5 安裝JDK 38 2.3.6 配置Hadoop 39 2.3.7 格式化HDFS 42 2.3.8 啟動Hadoop并驗證安裝 42 2.4 安裝Hive 43 2.4.1 安裝元數(shù)據(jù)庫 44 2.4.2 修改Hive配置文件 44 2.4.3 驗證安裝 45 2.5 安裝HBase 46 2.5.1 解壓文件并修改Zookeeper相關配置 46 2.5.2 配置節(jié)點 46 2.5.3 配置環(huán)境變量 47 2.5.4 啟動并驗證 47 2.6 安裝Sqoop 47 2.7 Cloudera Manager 48 2.8 小結 51 第3章 Hadoop的基石:HDFS 52 3.1 認識HDFS 52 3.1.1 HDFS的設計理念 54 3.1.2 HDFS的架構 54 3.1.3 HDFS容錯 58 3.2 HDFS讀取文件和寫入文件 58 3.2.1 塊的分布 59 3.2.2 數(shù)據(jù)讀取 60 3.2.3 寫入數(shù)據(jù) 61 3.2.4 數(shù)據(jù)完整性 62 3.3 如何訪問HDFS 63 3.3.1 命令行接口 63 3.3.2 Java API 66 3.3.3 其他常用的接口 75 3.3.4 Web UI 75 3.4 HDFS中的新特性 76 3.4.1 NameNode HA 76 3.4.2 NameNode Federation 78 3.4.3 HDFS Snapshots 79 3.5 小結 79 第4章 YARN:統(tǒng)一資源管理和調平臺 80 4.1 YARN是什么 80 4.2 統(tǒng)一資源管理和調度平臺范型 81 4.2.1 集中式調度器 81 4.2.2 雙層調度器 81 4.2.3 狀態(tài)共享調度器 82 4.3 YARN的架構 82 4.3.1 ResourceManager 83 4.3.2 NodeManager 85 4.3.3 ApplicationMaster 87 4.3.4 YARN的資源表示模型Container 87 4.4 YARN的工作流程 88 4.5 YARN的調度器 89 4.5.1 YARN的資源管理機制 89 4.5.2 FIFO Scheduler 90 4.5.3 Capacity Scheduler 90 4.5.4 Fair Scheduler 91 4.6 YARN命令行 92 4.7 Apache Mesos 95 4.8 小結 96 第5章 分而治之的智慧:MapReduce 97 5.1 認識MapReduce 97 5.1.1 MapReduce的編程思想 98 5.1.2 MapReduce運行環(huán)境 100 5.1.3 MapReduce作業(yè)和任務 102 5.1.4 MapReduce的計算資源劃分 102 5.1.5 MapReduce的局限性 103 5.2 Hello Word Count 104 5.2.1 Word Count的設計思路 104 5.2.2 編寫Word Count 105 5.2.3 運行程序 107 5.2.4 還能更快嗎 109 5.3 MapReduce的過程 109 5.3.1 從輸入到輸出 109 5.3.2 input 110 5.3.3 map及中間結果的輸出 112 5.3.4 shuffle 113 5.3.5 reduce及最后結果的輸出 115 5.3.6 sort 115 5.3.7 作業(yè)的進度組成 116 5.4 MapReduce的工作機制 116 5.4.1 作業(yè)提交 117 5.4.2 作業(yè)初始化 118 5.4.3 任務分配 118 5.4.4 任務執(zhí)行 118 5.4.5 任務完成 118 5.4.6 推測執(zhí)行 119 5.4.7 MapReduce容錯 119 5.5 MapReduce編程 120 5.5.1 Writable類 120 5.5.2 編寫Writable類 123 5.5.3 編寫Mapper類 124 5.5.4 編寫Reducer類 125 5.5.5 控制shuffle 126 5.5.6 控制sort 128 5.5.7 編寫main函數(shù) 129 5.6 MapReduce編程實例:連接 130 5.6.1 設計思路 131 5.6.2 編寫Mapper類 131 5.6.3 編寫Reducer類 132 5.6.4 編寫main函數(shù) 133 5.7 MapReduce編程實例:二次排序 134 5.7.1 設計思路 134 5.7.2 編寫Mapper類 135 5.7.3 編寫Partitioner類 136 5.7.4 編寫SortComparator類 136 5.7.5 編寫Reducer類 137 5.7.6 編寫main函數(shù) 137 5.8 MapReduce編程實例:全排序 139 5.8.1 設計思路 139 5.8.2 編寫代碼 140 5.9 小結 141 第6章 SQL on Hadoop:Hive 142 6.1 認識Hive 142 6.1.1 從MapReduce到SQL 143 6.1.2 Hive架構 144 6.1.3 Hive與關系型數(shù)據(jù)庫的區(qū)別 146 6.1.4 Hive命令的使用 147 6.2 數(shù)據(jù)類型和存儲格式 149 6.2.1 基本數(shù)據(jù)類型 149 6.2.2 復雜數(shù)據(jù)類型 149 6.2.3 存儲格式 150 6.2.4 數(shù)據(jù)格式 151 6.3 HQL:數(shù)據(jù)定義 152 6.3.1 Hive中的數(shù)據(jù)庫 152 6.3.2 Hive中的表 154 6.3.3 創(chuàng)建表 154 6.3.4 管理表 156 6.3.5 外部表 156 6.3.6 分區(qū)表 156 6.3.7 刪除表 158 6.3.8 修改表 158 6.4 HQL:數(shù)據(jù)操作 159 6.4.1 裝載數(shù)據(jù) 159 6.4.2 通過查詢語句向表中插入數(shù)據(jù) 160 6.4.3 利用動態(tài)分區(qū)向表中插入數(shù)據(jù) 160 6.4.4 通過CTAS加載數(shù)據(jù) 161 6.4.5 導出數(shù)據(jù) 161 6.5 HQL:數(shù)據(jù)查詢 162 6.5.1 SELECT…FROM語句 162 6.5.2 WHERE語句 163 6.5.3 GROUP BY和HAVING語句 164 6.5.4 JOIN語句 164 6.5.5 ORDER BY和SORT BY語句 166 6.5.6 DISTRIBUTE BY和SORT BY 語句 167 6.5.7 CLUSTER BY 167 6.5.8 分桶和抽樣 168 6.5.9 UNION ALL 168 6.6 Hive函數(shù) 168 6.6.1 標準函數(shù) 168 6.6.2 聚合函數(shù) 168 6.6.3 表生成函數(shù) 169 6.7 Hive用戶自定義函數(shù) 169 6.7.1 UDF 169 6.7.2 UDAF 170 6.7.3 UDTF 171 6.7.4 運行 173 6.8 小結 173 第7章 SQL to Hadoop : Sqoop 174 7.1 一個Sqoop示例 174 7.2 導入過程 176 7.3 導出過程 178 7.4 Sqoop的使用 179 7.4.1 codegen 180 7.4.2 create-hive-table 180 7.4.3 eval 181 7.4.4 export 181 7.4.5 help 182 7.4.6 import 182 7.4.7 import-all-tables 183 7.4.8 job 184 7.4.9 list-databases 184 7.4.10 list-tables 184 7.4.11 merge 184 7.4.12 metastore 185 7.4.13 version 186 7.5 小結 186 第8章 HBase:HadoopDatabase 187 8.1 酸和堿:兩種數(shù)據(jù)庫事務方法論 187 8.1.1 ACID 188 8.1.2 BASE 188 8.2 CAP定理 188 8.3 NoSQL的架構模式 189 8.3.1 鍵值存儲 189 8.3.2 圖存儲 190 8.3.3 列族存儲 191 8.3.4 文檔存儲 192 8.4 HBase的架構模式 193 8.4.1 行鍵、列族、列和單元格 193 8.4.2 HMaster 194 8.4.3 Region和RegionServer 195 8.4.4 WAL 195 8.4.5 HFile 195 8.4.6 Zookeeper 197 8.4.7 HBase架構 197 8.5 HBase寫入和讀取數(shù)據(jù) 198 8.5.1 Region定位 198 8.5.2 HBase寫入數(shù)據(jù) 199 8.5.3 HBase讀取數(shù)據(jù) 199 8.6 HBase基礎API 200 8.6.1 創(chuàng)建表 201 8.6.2 插入 202 8.6.3 讀取 203 8.6.4 掃描 204 8.6.5 刪除單元格 206 8.6.6 刪除表 207 8.7 HBase高級API 207 8.7.1 過濾器 208 8.7.2 計數(shù)器 208 8.7.3 協(xié)處理器 209 8.8 小結 214 第9章 Hadoop性能調優(yōu)和運維 215 9.1 Hadoop客戶端 215 9.2 Hadoop性能調優(yōu) 216 9.2.1 選擇合適的硬件 216 9.2.2 操作系統(tǒng)調優(yōu) 218 9.2.3 JVM調優(yōu) 219 9.2.4 Hadoop參數(shù)調優(yōu) 219 9.3 Hive性能調優(yōu) 225 9.3.1 JOIN優(yōu)化 226 9.3.2 Reducer的數(shù)量 226 9.3.3 列裁剪 226 9.3.4 分區(qū)裁剪 226 9.3.5 GROUP BY優(yōu)化 226 9.3.6 合并小文件 227 9.3.7 MULTI-GROUP BY和MULTI-INSERT 228 9.3.8 利用UNION ALL 特性 228 9.3.9 并行執(zhí)行 228 9.3.10 全排序 228 9.3.11 Top N 229 9.4 HBase調優(yōu) 229 9.4.1 通用調優(yōu) 229 9.4.2 客戶端調優(yōu) 230 9.4.3 寫調優(yōu) 231 9.4.4 讀調優(yōu) 231 9.4.5 表設計調優(yōu) 232 9.5 Hadoop運維 232 9.5.1 集群節(jié)點動態(tài)擴容和卸載 233 9.5.2 利用SecondaryNameNode恢復NameNode 234 9.5.3 常見的運維技巧 234 9.5.4 常見的異常處理 235 9.6 小結 236 應用篇:商業(yè)智能系統(tǒng)項目實戰(zhàn) 第10章 在線圖書銷售商業(yè)智能系統(tǒng) 238 10.1 項目背景 238 10.2 功能需求 239 10.3 非功能需求 240 10.4 小結 240 第11章 系統(tǒng)結構設計 241 11.1 系統(tǒng)架構 241 11.2 功能設計 242 11.3 數(shù)據(jù)倉庫結構 243 11.4 系統(tǒng)網(wǎng)絡拓撲與硬件選型 246 11.4.1 系統(tǒng)網(wǎng)絡拓撲 246 11.4.2 系統(tǒng)硬件選型 248 11.5 技術選型 249 11.5.1 平臺選型 249 11.5.2 系統(tǒng)開發(fā)語言選型 249 11.6 小結 249 第12章 在開發(fā)之前 250 12.1 新建一個工程 250 12.1.1 安裝Python 250 12.1.2 安裝PyDev插件 251 12.1.3 新建PyDev項目 252 12.2 代碼目錄結構 253 12.3 項目的環(huán)境變量 253 12.4 如何調試 254 12.5 小結 254 第13章 實現(xiàn)數(shù)據(jù)導入導出模塊 255 13.1 處理流程 255 13.2 導入方式 256 13.2.1 全量導入 256 13.2.2 增量導入 256 13.3 讀取配置文件 257 13.4 SqoopUtil 261 13.5 整合 262 13.6 導入說明 262 13.7 導出模塊 263 13.8 小結 265 第14章 實現(xiàn)數(shù)據(jù)分析工具模塊 266 14.1 處理流程 266 14.2 讀取配置文件 266 14.3 HiveUtil 268 14.4 整合 268 14.5 數(shù)據(jù)分析和報表 269 14.5.1 OLAP和Hive 269 14.5.2 OLAP和多維模型 270 14.5.3 選MySQL還是選HBase 272 14.6 小結 273 第15章 實現(xiàn)業(yè)務數(shù)據(jù)的數(shù)據(jù)清洗 模塊 274 15.1 ETL 274 15.1.1 數(shù)據(jù)抽取 274 15.1.2 數(shù)據(jù)轉換 274 15.1.3 數(shù)據(jù)清洗工具 275 15.2 處理流程 275 15.3 數(shù)據(jù)去重 276 15.3.1 產生原因 276 15.3.2 去重方法 277 15.3.3 一個很有用的UDF: RowNum 277 15.3.4 第二種去重方法 279 15.3.5 進行去重 279 15.4 小結 282 第16章 實現(xiàn)點擊流日志的數(shù)據(jù)清洗 模塊 283 16.1 數(shù)據(jù)倉庫和Web 283 16.2 處理流程 285 16.3 字段的獲取 285 16.4 編寫MapReduce作業(yè) 288 16.4.1 編寫IP地址解析器 288 16.4.2 編寫Mapper類 291 16.4.3 編寫Partitioner類 295 16.4.4 編寫SortComparator類 295 16.4.5 編寫Reducer類 297 16.4.6 編寫main函數(shù) 298 16.4.7 通過Python調用jar文件 299 16.5 還能做什么 300 16.5.1 網(wǎng)站分析的指標 300 16.5.2 網(wǎng)站分析的決策支持 301 16.6 小結 301 第17章 實現(xiàn)購書轉化率分析模塊 302 17.1 漏斗模型 302 17.2 處理流程 303 17.3 讀取配置文件 303 17.4 提取所需數(shù)據(jù) 304 17.5 編寫轉化率分析MapReduce作業(yè) 305 17.5.1 編寫Mapper類 306 17.5.2 編寫Partitioner類 308 17.5.3 編寫SortComparator類 309 17.5.4 編寫Reducer類 310 17.5.5 編寫Driver類 312 17.5.6 通過Python模塊調用jar文件 314 17.6 對中間結果進行匯總得到最終 結果 314 17.7 整合 316 17.8 小結 316 第18章 實現(xiàn)購書用戶聚類模塊 317 18.1 物以類聚 317 18.2 聚類算法 318 18.2.1 k-means算法 318 18.2.2 Canopy算法 319 18.2.3 數(shù)據(jù)向量化 320 18.2.4 數(shù)據(jù)歸一化 321 18.2.5 相似性度量 322 18.3 用MapReduce實現(xiàn)聚類算法 323 18.3.1 Canopy算法與MapReduce 323 18.3.2 k-means算法與MapReduce 323 18.3.3 Apache Mahout 324 18.4 處理流程 324 18.5 提取數(shù)據(jù)并做歸一化 325 18.6 維度相關性 327 18.6.1 維度的選取 327 18.6.2 相關系數(shù)與相關系數(shù)矩陣 328 18.6.3 計算相關系數(shù)矩陣 328 18.7 使用Mahout完成聚類 329 18.7.1 使用Mahout 329 18.7.2 解析Mahout的輸出 332 18.7.3 得到聚類結果 334 18.8 得到最終結果 335 18.9 評估聚類結果 337 18.9.1 一份不適合聚類的數(shù)據(jù) 337 18.9.2 簇間距離和簇內距離 337 18.9.3 計算平均簇間距離 338 18.10 小結 339 第19章 實現(xiàn)調度模塊 340 19.1 工作流 340 19.2 編寫代碼 341 19.3 crontab 342 19.4 讓數(shù)據(jù)說話 343 19.5 小結 344 結束篇:總結和展望 第20章 總結和展望 346 20.1 總結 346 20.2 BDAS 347 20.3 Dremel系技術 348 20.4 Pregel系技術 349 20.5 Docker和Kubernetes 350 20.6 數(shù)據(jù)集成工具NiFi 350 20.7 小結 351 參考文獻 352
你還可能感興趣
我要評論
|