關(guān)于我們
書單推薦
新書推薦
|
Hadoop海量數(shù)據(jù)處理 技術(shù)詳解與項(xiàng)目實(shí)戰(zhàn)(第2版)
本書介紹了Hadoop技術(shù)的相關(guān)知識(shí),并將理論知識(shí)與實(shí)際項(xiàng)目相結(jié)合。全書共分為三個(gè)部分:基礎(chǔ)篇、應(yīng)用篇和總結(jié)篇。基礎(chǔ)篇詳細(xì)介紹了Hadoop、YARN、MapReduce、HDFS、Hive、Sqoop和HBase,并深入探討了Hadoop的運(yùn)維和調(diào)優(yōu);應(yīng)用篇?jiǎng)t包含了一個(gè)具有代表性的完整的基于Hadoop的商業(yè)智能系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn);結(jié)束篇對(duì)全書進(jìn)行總結(jié),并對(duì)技術(shù)發(fā)展做了展望。
Hadoop是目前受關(guān)注的大數(shù)據(jù)處理平臺(tái)和解決方案,并且已經(jīng)廣泛應(yīng)用于生產(chǎn)環(huán)境。本書基于新的Hadoop(CDH5,Apache Hadoop 2.6)版本介紹Hadoop技術(shù)的相關(guān)知識(shí),不但詳細(xì)介紹了Hadoop、HDFS、YARN、MapReduce、Hive、Sqoop和HBase等,還深入探討了Hadoop、HBase的運(yùn)維和性能調(diào)優(yōu),并包含了一個(gè)具有代表性的完整的基于Hadoop的商業(yè)智能系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。
本書的大特點(diǎn)是面向?qū)嵺`;A(chǔ)篇介紹Hadoop及相關(guān)組件的同時(shí),包含了大量動(dòng)手實(shí)例,而應(yīng)用篇包含的基于Hadoop的完整實(shí)例脫胎于生產(chǎn)環(huán)境的真實(shí)項(xiàng)目。在應(yīng)用篇中,讀者不僅能夠通過項(xiàng)目實(shí)戰(zhàn)鞏固基礎(chǔ)篇的學(xué)習(xí)效果,還能學(xué)習(xí)商業(yè)智能系統(tǒng)的開發(fā)過程。 本書由淺至深,從理論基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn),適合Hadoop的初學(xué)者閱讀,也可以作為高等院校相關(guān)課程的教學(xué)參考書。 本書主要內(nèi)容 ? 包含了Hadoop新版本的幾乎所有主要特性,是Hadoop目前成熟的形態(tài)。 ? 深入介紹了NoSQL架構(gòu)模式、HBase的架構(gòu)和實(shí)現(xiàn),以及HBase的高級(jí)特性。 ? 深入介紹了統(tǒng)一資源管理和調(diào)度平臺(tái)的范型和YARN實(shí)現(xiàn)。 ? 深入介紹了Hadoop、HBase性能調(diào)優(yōu),滿足海量數(shù)據(jù)處理的需求。 ? 包含了一個(gè)完整的項(xiàng)目實(shí)戰(zhàn),從需求定義、系統(tǒng)設(shè)計(jì)和架構(gòu)后到代碼實(shí)現(xiàn)。 ? 包含了一個(gè)機(jī)器學(xué)習(xí)算法應(yīng)用實(shí)戰(zhàn),利用Hadoop進(jìn)行大數(shù)據(jù)挖掘,從數(shù)據(jù)中尋找模式。
范東來,北京航空航天大學(xué)碩士,技術(shù)圖書作者和譯者,著有《Hadoop海量數(shù)據(jù)處理》(該書臺(tái)灣繁體字版為《Hadoop:BigData技術(shù)詳解與專案實(shí)作》),譯有《解讀NoSQL》。BBD(數(shù)聯(lián)銘品)大數(shù)據(jù)技術(shù)部負(fù)責(zé)人,大數(shù)據(jù)平臺(tái)架構(gòu)師,極客學(xué)院布道師。研究方向:并行圖挖掘、去中心化應(yīng)用。
基礎(chǔ)篇:Hadoop基礎(chǔ)
第1章 緒論 2 1.1 Hadoop和云計(jì)算 2 1.1.1 Hadoop的電梯演講 2 1.1.2 Hadoop生態(tài)圈 3 1.1.3 云計(jì)算的定義 6 1.1.4 云計(jì)算的類型 7 1.1.5 Hadoop和云計(jì)算 8 1.2 Hadoop和大數(shù)據(jù) 9 1.2.1 大數(shù)據(jù)的定義 9 1.2.2 大數(shù)據(jù)的結(jié)構(gòu)類型 10 1.2.3 大數(shù)據(jù)行業(yè)應(yīng)用實(shí)例 12 1.2.4 Hadoop和大數(shù)據(jù) 13 1.2.5 其他大數(shù)據(jù)處理平臺(tái) 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ù)時(shí)代的商業(yè)智能 20 1.4 小結(jié) 21 第2章 環(huán)境準(zhǔ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架構(gòu) 26 2.2.1 Hadoop HDFS架構(gòu) 27 2.2.2 YARN架構(gòu) 28 2.2.3 Hadoop架構(gòu) 28 2.3 安裝Hadoop 29 2.3.1 安裝運(yùn)行環(huán)境 30 2.3.2 修改主機(jī)名和用戶名 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 啟動(dòng)Hadoop并驗(yàn)證安裝 42 2.4 安裝Hive 43 2.4.1 安裝元數(shù)據(jù)庫 44 2.4.2 修改Hive配置文件 44 2.4.3 驗(yàn)證安裝 45 2.5 安裝HBase 46 2.5.1 解壓文件并修改Zookeeper相關(guān)配置 46 2.5.2 配置節(jié)點(diǎn) 46 2.5.3 配置環(huán)境變量 47 2.5.4 啟動(dòng)并驗(yàn)證 47 2.6 安裝Sqoop 47 2.7 Cloudera Manager 48 2.8 小結(jié) 51 第3章 Hadoop的基石:HDFS 52 3.1 認(rèn)識(shí)HDFS 52 3.1.1 HDFS的設(shè)計(jì)理念 54 3.1.2 HDFS的架構(gòu) 54 3.1.3 HDFS容錯(cuò) 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 小結(jié) 79 第4章 YARN:統(tǒng)一資源管理和調(diào)平臺(tái) 80 4.1 YARN是什么 80 4.2 統(tǒng)一資源管理和調(diào)度平臺(tái)范型 81 4.2.1 集中式調(diào)度器 81 4.2.2 雙層調(diào)度器 81 4.2.3 狀態(tài)共享調(diào)度器 82 4.3 YARN的架構(gòu) 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的調(diào)度器 89 4.5.1 YARN的資源管理機(jī)制 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 小結(jié) 96 第5章 分而治之的智慧:MapReduce 97 5.1 認(rèn)識(shí)MapReduce 97 5.1.1 MapReduce的編程思想 98 5.1.2 MapReduce運(yùn)行環(huán)境 100 5.1.3 MapReduce作業(yè)和任務(wù) 102 5.1.4 MapReduce的計(jì)算資源劃分 102 5.1.5 MapReduce的局限性 103 5.2 Hello Word Count 104 5.2.1 Word Count的設(shè)計(jì)思路 104 5.2.2 編寫Word Count 105 5.2.3 運(yùn)行程序 107 5.2.4 還能更快嗎 109 5.3 MapReduce的過程 109 5.3.1 從輸入到輸出 109 5.3.2 input 110 5.3.3 map及中間結(jié)果的輸出 112 5.3.4 shuffle 113 5.3.5 reduce及最后結(jié)果的輸出 115 5.3.6 sort 115 5.3.7 作業(yè)的進(jìn)度組成 116 5.4 MapReduce的工作機(jī)制 116 5.4.1 作業(yè)提交 117 5.4.2 作業(yè)初始化 118 5.4.3 任務(wù)分配 118 5.4.4 任務(wù)執(zhí)行 118 5.4.5 任務(wù)完成 118 5.4.6 推測(cè)執(zhí)行 119 5.4.7 MapReduce容錯(cuò) 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編程實(shí)例:連接 130 5.6.1 設(shè)計(jì)思路 131 5.6.2 編寫Mapper類 131 5.6.3 編寫Reducer類 132 5.6.4 編寫main函數(shù) 133 5.7 MapReduce編程實(shí)例:二次排序 134 5.7.1 設(shè)計(jì)思路 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編程實(shí)例:全排序 139 5.8.1 設(shè)計(jì)思路 139 5.8.2 編寫代碼 140 5.9 小結(jié) 141 第6章 SQL on Hadoop:Hive 142 6.1 認(rèn)識(shí)Hive 142 6.1.1 從MapReduce到SQL 143 6.1.2 Hive架構(gòu) 144 6.1.3 Hive與關(guān)系型數(shù)據(jù)庫的區(qū)別 146 6.1.4 Hive命令的使用 147 6.2 數(shù)據(jù)類型和存儲(chǔ)格式 149 6.2.1 基本數(shù)據(jù)類型 149 6.2.2 復(fù)雜數(shù)據(jù)類型 149 6.2.3 存儲(chǔ)格式 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 利用動(dòng)態(tài)分區(qū)向表中插入數(shù)據(jù) 160 6.4.4 通過CTAS加載數(shù)據(jù) 161 6.4.5 導(dǎo)出數(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 標(biāo)準(zhǔn)函數(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 運(yùn)行 173 6.8 小結(jié) 173 第7章 SQL to Hadoop : Sqoop 174 7.1 一個(gè)Sqoop示例 174 7.2 導(dǎo)入過程 176 7.3 導(dǎo)出過程 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 小結(jié) 186 第8章 HBase:HadoopDatabase 187 8.1 酸和堿:兩種數(shù)據(jù)庫事務(wù)方法論 187 8.1.1 ACID 188 8.1.2 BASE 188 8.2 CAP定理 188 8.3 NoSQL的架構(gòu)模式 189 8.3.1 鍵值存儲(chǔ) 189 8.3.2 圖存儲(chǔ) 190 8.3.3 列族存儲(chǔ) 191 8.3.4 文檔存儲(chǔ) 192 8.4 HBase的架構(gòu)模式 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架構(gòu) 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基礎(chǔ)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高級(jí)API 207 8.7.1 過濾器 208 8.7.2 計(jì)數(shù)器 208 8.7.3 協(xié)處理器 209 8.8 小結(jié) 214 第9章 Hadoop性能調(diào)優(yōu)和運(yùn)維 215 9.1 Hadoop客戶端 215 9.2 Hadoop性能調(diào)優(yōu) 216 9.2.1 選擇合適的硬件 216 9.2.2 操作系統(tǒng)調(diào)優(yōu) 218 9.2.3 JVM調(diào)優(yōu) 219 9.2.4 Hadoop參數(shù)調(diào)優(yōu) 219 9.3 Hive性能調(diào)優(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調(diào)優(yōu) 229 9.4.1 通用調(diào)優(yōu) 229 9.4.2 客戶端調(diào)優(yōu) 230 9.4.3 寫調(diào)優(yōu) 231 9.4.4 讀調(diào)優(yōu) 231 9.4.5 表設(shè)計(jì)調(diào)優(yōu) 232 9.5 Hadoop運(yùn)維 232 9.5.1 集群節(jié)點(diǎn)動(dòng)態(tài)擴(kuò)容和卸載 233 9.5.2 利用SecondaryNameNode恢復(fù)NameNode 234 9.5.3 常見的運(yùn)維技巧 234 9.5.4 常見的異常處理 235 9.6 小結(jié) 236 應(yīng)用篇:商業(yè)智能系統(tǒng)項(xiàng)目實(shí)戰(zhàn) 第10章 在線圖書銷售商業(yè)智能系統(tǒng) 238 10.1 項(xiàng)目背景 238 10.2 功能需求 239 10.3 非功能需求 240 10.4 小結(jié) 240 第11章 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 241 11.1 系統(tǒng)架構(gòu) 241 11.2 功能設(shè)計(jì) 242 11.3 數(shù)據(jù)倉庫結(jié)構(gòu) 243 11.4 系統(tǒng)網(wǎng)絡(luò)拓?fù)渑c硬件選型 246 11.4.1 系統(tǒng)網(wǎng)絡(luò)拓?fù)洹?46 11.4.2 系統(tǒng)硬件選型 248 11.5 技術(shù)選型 249 11.5.1 平臺(tái)選型 249 11.5.2 系統(tǒng)開發(fā)語言選型 249 11.6 小結(jié) 249 第12章 在開發(fā)之前 250 12.1 新建一個(gè)工程 250 12.1.1 安裝Python 250 12.1.2 安裝PyDev插件 251 12.1.3 新建PyDev項(xiàng)目 252 12.2 代碼目錄結(jié)構(gòu) 253 12.3 項(xiàng)目的環(huán)境變量 253 12.4 如何調(diào)試 254 12.5 小結(jié) 254 第13章 實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入導(dǎo)出模塊 255 13.1 處理流程 255 13.2 導(dǎo)入方式 256 13.2.1 全量導(dǎo)入 256 13.2.2 增量導(dǎo)入 256 13.3 讀取配置文件 257 13.4 SqoopUtil 261 13.5 整合 262 13.6 導(dǎo)入說明 262 13.7 導(dǎo)出模塊 263 13.8 小結(jié) 265 第14章 實(shí)現(xiàn)數(shù)據(jù)分析工具模塊 266 14.1 處理流程 266 14.2 讀取配置文件 266 14.3 HiveUtil 268 14.4 整合 268 14.5 數(shù)據(jù)分析和報(bào)表 269 14.5.1 OLAP和Hive 269 14.5.2 OLAP和多維模型 270 14.5.3 選MySQL還是選HBase 272 14.6 小結(jié) 273 第15章 實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)清洗 模塊 274 15.1 ETL 274 15.1.1 數(shù)據(jù)抽取 274 15.1.2 數(shù)據(jù)轉(zhuǎn)換 274 15.1.3 數(shù)據(jù)清洗工具 275 15.2 處理流程 275 15.3 數(shù)據(jù)去重 276 15.3.1 產(chǎn)生原因 276 15.3.2 去重方法 277 15.3.3 一個(gè)很有用的UDF: RowNum 277 15.3.4 第二種去重方法 279 15.3.5 進(jìn)行去重 279 15.4 小結(jié) 282 第16章 實(shí)現(xiàn)點(diǎ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調(diào)用jar文件 299 16.5 還能做什么 300 16.5.1 網(wǎng)站分析的指標(biāo) 300 16.5.2 網(wǎng)站分析的決策支持 301 16.6 小結(jié) 301 第17章 實(shí)現(xiàn)購書轉(zhuǎn)化率分析模塊 302 17.1 漏斗模型 302 17.2 處理流程 303 17.3 讀取配置文件 303 17.4 提取所需數(shù)據(jù) 304 17.5 編寫轉(zhuǎn)化率分析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模塊調(diào)用jar文件 314 17.6 對(duì)中間結(jié)果進(jìn)行匯總得到最終 結(jié)果 314 17.7 整合 316 17.8 小結(jié) 316 第18章 實(shí)現(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實(shí)現(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 維度相關(guān)性 327 18.6.1 維度的選取 327 18.6.2 相關(guān)系數(shù)與相關(guān)系數(shù)矩陣 328 18.6.3 計(jì)算相關(guān)系數(shù)矩陣 328 18.7 使用Mahout完成聚類 329 18.7.1 使用Mahout 329 18.7.2 解析Mahout的輸出 332 18.7.3 得到聚類結(jié)果 334 18.8 得到最終結(jié)果 335 18.9 評(píng)估聚類結(jié)果 337 18.9.1 一份不適合聚類的數(shù)據(jù) 337 18.9.2 簇間距離和簇內(nèi)距離 337 18.9.3 計(jì)算平均簇間距離 338 18.10 小結(jié) 339 第19章 實(shí)現(xiàn)調(diào)度模塊 340 19.1 工作流 340 19.2 編寫代碼 341 19.3 crontab 342 19.4 讓數(shù)據(jù)說話 343 19.5 小結(jié) 344 結(jié)束篇:總結(jié)和展望 第20章 總結(jié)和展望 346 20.1 總結(jié) 346 20.2 BDAS 347 20.3 Dremel系技術(shù) 348 20.4 Pregel系技術(shù) 349 20.5 Docker和Kubernetes 350 20.6 數(shù)據(jù)集成工具NiFi 350 20.7 小結(jié) 351 參考文獻(xiàn) 352
你還可能感興趣
我要評(píng)論
|