Hadoop應用開發技術詳解( 簡體 字) | |
作者:劉剛 | 類別:1. -> 程式設計 -> 雲計算 |
出版社:機械工業出版社 | 3dWoo書號: 37400 詢問書籍請說出此書號! 有庫存 NT售價: 395 元 |
出版日:1/24/2014 | |
頁數:420 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111452447 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
目 錄
前 言 第1章 Hadoop概述 / 1 1.1 Hadoop起源 / 1 1.1.1 Google與Hadoop模塊 / 1 1.1.2 為什么會有Hadoop / 1 1.1.3 Hadoop版本介紹 / 2 1.2 Hadoop生態系統 / 3 1.3 Hadoop常用項目介紹 / 4 1.4 Hadoop在國內的應用 / 6 1.5 本章小結 / 7 第2章 Hadoop安裝 / 8 2.1 Hadoop環境安裝配置 / 8 2.1.1 安裝VMware / 8 2.1.2 安裝Ubuntu / 8 2.1.3 安裝VMware Tools / 15 2.1.4 安裝JDK / 15 2.2 Hadoop 安裝模式 / 16 2.2.1 單機安裝 / 17 2.2.2 偽分布式安裝 / 18 2.2.3 分布式安裝 / 20 2.3 如何使用Hadoop / 27 2.3.1 Hadoop的啟動與停止 / 27 2.3.2 Hadoop配置文件 / 28 2.4 本章小結 / 28 第3章 MapReduce快速入門 / 30 3.1 WordCount 實例準備開發環境 / 30 3.1.1 使用Eclipse創建一個Java工程 / 30 3.1.2 導入Hadoop的JAR文件 / 31 3.2 MapReduce代碼的實現 / 32 3.2.1 編寫WordMapper類 / 32 3.2.2 編寫WordReducer類 / 33 3.2.3 編寫WordMain驅動類 / 34 3.3 打包、部署和運行 / 35 3.3.1 打包成JAR文件 / 35 3.3.2 部署和運行 / 36 3.3.3 測試結果 / 38 3.4 本章小結 / 39 第4章 Hadoop分布式文件系統詳解 / 40 4.1 認識HDFS / 40 4.1.1 HDFS的特點 / 40 4.1.2 Hadoop文件系統的接口 / 45 4.1.3 HDFS的Web服務 / 46 4.2 HDFS架構 / 46 4.2.1 機架 / 47 4.2.2 數據塊 / 47 4.2.3 元數據節點 / 48 4.2.4 數據節點 / 50 4.2.5 輔助元數據節點 / 50 4.2.6 名字空間 / 52 4.2.7 數據復制 / 53 4.2.8 塊備份原理 / 53 4.2.9 機架感知 / 54 4.3 Hadoop的RPC機制 / 55 4.3.1 RPC的實現流程 / 56 4.3.2 RPC的實體模型 / 56 4.3.3 文件的讀取 / 57 4.3.4 文件的寫入 / 58 4.3.5 文件的一致模型 / 59 4.4 HDFS的HA機制 / 59 4.4.1 HA集群 / 59 4.4.2 HA架構 / 60 4.4.3 為什么會有HA機制 / 61 4.5 HDFS的Federation機制 / 62 4.5.1 單個NameNode的HDFS架構的局限性 / 62 4.5.2 為什么引入Federation機制 / 63 4.5.3 Federation架構 / 64 4.5.4 多個名字空間的管理問題 / 65 4.6 Hadoop文件系統的訪問 / 66 4.6.1 安全模式 / 66 4.6.2 HDFS的Shell訪問 / 67 4.6.3 HDFS處理文件的命令 / 67 4.7 Java API接口 / 72 4.7.1 Hadoop URL讀取數據 / 73 4.7.2 FileSystem類 / 73 4.7.3 FileStatus類 / 75 4.7.4 FSDataInputStream類 / 77 4.7.5 FSDataOutputStream類 / 81 4.7.6 列出HDFS下所有的文件 / 83 4.7.7 文件的匹配 / 84 4.7.8 PathFilter對象 / 84 4.8 維護HDFS / 86 4.8.1 追加數據 / 86 4.8.2 并行復制 / 88 4.8.3 升級與回滾 / 88 4.8.4 添加節點 / 90 4.8.5 刪除節點 / 91 4.9 HDFS權限管理 / 92 4.9.1 用戶身份 / 92 4.9.2 權限管理的原理 / 93 4.9.3 設置權限的Shell命令 / 93 4.9.4 超級用戶 / 93 4.9.5 HDFS權限配置參數 / 94 4.10 本章小結 / 94 第5章 Hadoop 文件 I/O 詳解 / 95 5.1 Hadoop文件的數據結構 / 95 5.1.1 SequenceFile 存儲 / 95 5.1.2 MapFile存儲 / 99 5.1.3 SequenceFile轉換為MapFile / 101 5.2 HDFS數據完整性 / 103 5.2.1 校驗和 / 103 5.2.2 數據塊檢測程序 / 104 5.3 文件序列化 / 106 5.3.1 進程間通信對序列化的要求 / 106 5.3.2 Hadoop文件的序列化 / 107 5.3.3 Writable接口 / 107 5.3.4 WritableComparable接口 / 108 5.3.5 自定義Writable接口 / 109 5.3.6 序列化框架 / 113 5.3.7 數據序列化系統Avro / 114 5.4 Hadoop的Writable類型 / 115 5.4.1 Writable類的層次結構 / 115 5.4.2 Text類型 / 116 5.4.3 NullWritable類型 / 117 5.4.4 ObjectWritable類型 / 117 5.4.5 GenericWritable類型 / 117 5.5 文件壓縮 / 117 5.5.1 Hadoop支持的壓縮格式 / 118 5.5.2 Hadoop中的編碼器和解碼器 / 118 5.5.3 本地庫 / 121 5.5.4 可分割壓縮 LZO / 122 5.5.5 壓縮文件性能比較 / 122 5.5.6 Snappy壓縮 / 124 5.5.7 gzip、LZO和Snappy比較 / 124 5.6 本章小結 / 125 第6章 MapReduce工作原理 / 126 6.1 MapReduce的函數式編程概念 / 126 6.1.1 列表處理 / 126 6.1.2 Mapping數據列表 / 127 6.1.3 Reducing數據列表 / 127 6.1.4 Mapper和Reducer如何工作 / 128 6.1.5 應用實例:詞頻統計 / 129 6.2 MapReduce框架結構 / 129 6.2.1 MapReduce模型 / 130 6.2.2 MapReduce框架組成 / 130 6.3 MapReduce運行原理 / 132 6.3.1 作業的提交 / 132 6.3.2 作業初始化 / 134 6.3.3 任務的分配 / 136 6.3.4 任務的執行 / 136 6.3.5 進度和狀態的更新 / 136 6.3.6 MapReduce的進度組成 / 137 6.3.7 任務完成 / 137 6.4 MapReduce容錯 / 137 6.4.1 任務失敗 / 138 6.4.2 TaskTracker失敗 / 138 6.4.3 JobTracker失敗 / 138 6.4.4 子任務失敗 / 138 6.4.5 任務失敗反復次數的處理方法 / 139 6.5 Shuffle階段和Sort階段 / 139 6.5.1 Map端的Shuffle / 140 6.5.2 Reduce端的Shuffle / 142 6.5.3 Shuffle過程參數調優 / 143 6.6 任務的執行 / 144 6.6.1 推測執行 / 144 6.6.2 任務JVM重用 / 145 6.6.3 跳過壞的記錄 / 145 6.6.4 任務執行的環境 / 146 6.7 作業調度器 / 146 6.7.1 先進先出調度器 / 146 6.7.2 容量調度器 / 146 6.7.3 公平調度器 / 149 6.8 自定義Hadoop調度器 / 153 6.8.1 Hadoop調度器框架 / 153 6.8.2 編寫Hadoop調度器 / 155 6.9 YARN介紹 / 157 6.9.1 異步編程模型 / 157 6.9.2 YARN支持的計算框架 / 158 6.9.3 YARN架構 / 158 6.9.4 YARN工作流程 / 159 6.10 本章小結 / 160 第7章 Eclipse插件的應用 / 161 7.1 編譯Hadoop源碼 / 161 7.1.1 下載Hadoop源碼 / 161 7.1.2 準備編譯環境 / 161 7.1.3 編譯common組件 / 162 7.2 Eclipse安裝MapReduce插件 / 166 7.2.1 查找MapReduce插件 / 166 7.2.2 新建一個Hadoop location / 167 7.2.3 Hadoop插件操作HDFS / 168 7.2.4 運行MapReduce的驅動類 / 170 7.3 MapReduce的Debug調試 / 171 7.3.1 進入Debug運行模式 / 171 7.3.2 Debug調試具體操作 / 172 7.4 單元測試框架MRUnit / 174 7.4.1 認識MRUnit框架 / 174 7.4.2 準備測試案例 / 174 7.4.3 Mapper單元測試 / 176 7.4.4 Reducer單元測試 / 177 7.4.5 MapReduce單元測試 / 178 7.5 本章小結 / 179 第8章 MapReduce編程開發 / 180 8.1 WordCount案例分析 / 180 8.1.1 MapReduce工作流程 / 180 8.1.2 WordCount的Map過程 / 181 8.1.3 WordCount的Reduce過程 / 182 8.1.4 每個過程產生的結果 / 182 8.1.5 Mapper抽象類 / 184 8.1.6 Reducer抽象類 / 186 8.1.7 MapReduce驅動 / 188 8.1.8 MapReduce最小驅動 / 189 8.2 輸入格式 / 193 8.2.1 InputFormat接口 / 193 8.2.2 InputSplit類 / 195 8.2.3 RecordReader類 / 197 8.2.4 應用實例:隨機生成100個小數并求最大值 / 198 8.3 輸出格式 / 205 8.3.1 OutputFormat接口 / 205 8.3.2 RecordWriter類 / 206 8.3.3 應用實例:把首字母相同的單詞放到一個文件里 / 206 8.4 壓縮格式 / 211 8.4.1 如何在MapReduce中使用壓縮 / 211 8.4.2 Map作業輸出結果的壓縮 / 212 8.5 MapReduce優化 / 212 8.5.1 Combiner類 / 212 8.5.2 Partitioner類 / 213 8.5.3 分布式緩存 / 217 8.6 輔助類 / 218 8.6.1 讀取Hadoop配置文件 / 218 8.6.2 設置Hadoop的配置文件屬性 / 219 8.6.3 GenericOptionsParser選項 / 220 8.7 Streaming接口 / 221 8.7.1 Streaming工作原理 / 221 8.7.2 Streaming編程接口參數 / 221 8.7.3 作業配置屬性 / 222 8.7.4 應用實例:抓取網頁的標題 / 223 8.8 本章小結 / 225 第9章 MapReduce 高級應用 / 226 9.1 計數器 / 226 9.1.1 默認計數器 / 226 9.1.2 自定義計數器 / 229 9.1.3 獲取計數器 / 231 9.2 MapReduce二次排序 / 232 9.2.1 二次排序原理 / 232 9.2.2 二次排序的算法流程 / 233 9.2.3 代碼實現 / 235 9.3 MapReduce中的Join算法 / 240 9.3.1 Reduce端Join / 240 9.3.2 Map端Join / 242 9.3.3 半連接Semi Join / 244 9.4 MapReduce從MySQL讀寫數據 / 244 9.4.1 讀數據 / 245 9.4.2 寫數據 / 248 9.5 Hadoop系統調優 / 248 9.5.1 小文件優化 / 249 9.5.2 Map和Reduce個數設置 / 249 9.6 本章小結 / 250 第10章 數據倉庫工具Hive / 251 10.1 認識Hive / 251 10.1.1 Hive工作原理 / 251 10.1.2 Hive數據類型 / 252 10.1.3 Hive的特點 / 253 10.1.4 Hive下載與安裝 / 255 10.2 Hive架構 / 256 10.2.1 Hive用戶接口 / 257 10.2.2 Hive元數據庫 / 259 10.2.3 Hive的數據存儲 / 262 10.2.4 Hive解釋器 / 263 10.3 Hive 文件格式 / 264 10.3.1 TextFile格式 / 265 10.3.2 SequenceFile 格式 / 265 10.3.3 RCFile文件格式 / 265 10.3.4 自定義文件格式 / 269 10.4 Hive操作 / 270 10.4.1 表操作 / 270 10.4.2 視圖操作 / 278 10.4.3 索引操作 / 280 10.4.4 分區操作 / 283 10.4.5 桶操作 / 289 10.5 Hive復合類型 / 290 10.5.1 Struct類型 / 291 10.5.2 Array類型 / 292 10.5.3 Map類型 / 293 10.6 Hive的JOIN詳解 / 294 10.6.1 JOIN操作語法 / 294 10.6.2 JOIN原理 / 294 10.6.3 外部JOIN / 295 10.6.4 Map端JOIN / 296 10.6.5 JOIN中處理NULL值的語義區別 / 296 10.7 Hive 優化策略 / 297 10.7.1 列裁剪 / 297 10.7.2 Map Join操作 / 297 10.7.3 Group By操作 / 298 10.7.4 合并小文件 / 298 10.8 Hive內置操作符與函數 / 298 10.8.1 字符串函數 / 299 10.8.2 集合統計函數 / 299 10.8.3 復合類型操作 / 301 10.9 Hive用戶自定義函數接口 / 302 10.9.1 用戶自定義函數UDF / 302 10.9.2 用戶自定義聚合函數UDAF / 304 10.10 Hive的權限控制 / 306 10.10.1 角色的創建和刪除 / 307 10.10.2 角色的授權和撤銷 / 307 10.10.3 超級管理員權限 / 309 10.11 應用實例:使用 JDBC開發Hive 程序 / 311 10.11.1 準備測試數據 / 311 10.11.2 代碼實現 / 311 10.12 本章小結 / 313 第11章 開源數據庫HBase / 314 11.1 認識HBase / 314 11.1.1 HBase的特點 / 314 11.1.2 HBase訪問接口 / 314 11.1.3 HBase存儲結構 / 315 11.1.4 HBase存儲格式 / 317 11.2 HBase設計 / 319 11.2.1 邏輯視圖 / 320 11.2.2 框架結構及流程 / 321 11.2.3 Table和Region的關系 / 323 11.2.4 -ROOT-表和.META.表 / 323 11.3 關鍵算法和流程 / 324 11.3.1 Region定位 / 324 11.3.2 讀寫過程 / 325 11.3.3 Region分配 / 327 11.3.4 Region Server上線和下線 / 327 11.3.5 Master上線和下線 / 327 11.4 HBase安裝 / 328 11.4.1 HBase單機安裝 / 328 11.4.2 HBase分布式安裝 / 330 11.5 HBase的Shell操作 / 334 11.5.1 一般操作 / 334 11.5.2 DDL操作 / 335 11.5.3 DML操作 / 337 11.5.4 HBase Shell腳本 / 339 11.6 HBase客戶端 / 340 11.6.1 Java API交互 / 340 11.6.2 MapReduce操作HBase / 344 11.6.3 向HBase中寫入數據 / 348 11.6.4 讀取HBase中的數據 / 350 11.6.5 Avro、REST和Thrift接口 / 352 11.7 本章小結 / 353 第12章 Mahout算法 / 354 12.1 Mahout的使用 / 354 12.1.1 安裝Mahout / 354 12.1.2 運行一個Mahout案例 / 354 12.2 Mahout數據表示 / 356 12.2.1 偏好Perference類 / 356 12.2.2 數據模型DataModel類 / 357 12.2.3 Mahout 鏈接MySQL數據庫 / 358 12.3 認識Taste框架 / 360 12.4 Mahout推薦器 / 361 12.4.1 基于用戶的推薦器 / 361 12.4.2 基于項目的推薦器 / 362 12.4.3 Slope One 推薦策略 / 363 12.5 推薦系統 / 365 12.5.1 個性化推薦 / 365 12.5.2 商品推薦系統案例 / 366 12.6 本章小結 / 370 附錄A Hive內置操作符與函數 / 371 附錄B HBase 默認配置解釋 / 392 附錄C Hadoop三個配置文件的參數含義說明 / 398 (資深專家系統講解Hadoop開發各項技術和編程方法)
本書由資深Hadoop技術專家撰寫,系統、全面、深入地講解了Hadoop開發者需要掌握的技術和知識,包括HDFS的原理和應用、Hadoop文件I/O的原理和應用、MapReduce的原理和高級應用、MapReduce的編程方法和技巧,以及Hive、HBase和Mahout等技術和工具的使用。并且提供大量基于實際生產環境的案例,實戰性非常強。 全書一共12章。第1~2章詳細地介紹了Hadoop的生態系統、關鍵技術以及安裝和配置;第3章是MapReduce的使用入門,讓讀者了解整個開發過程;第4~5章詳細講解了分布式文件系統HDFS和Hadoop的文件I/O;第6章分析了MapReduce的工作原理;第7章講解了如何利用Eclipse來編譯Hadoop的源代碼,以及如何對Hadoop應用進行測試和調試;第8~9章細致地講解了MapReduce的開發方法和高級應用;第10~12章系統地講解了Hive、HBase和Mahout。 |