內容簡介
內容簡介 Hadoop 是Apache 基金會的開放原始碼專案,為開發者提供了一個分散式系統的基礎架構,使用者可以在不了解分散式系統的底層細節的情況下開發分散式的應用,充分利用叢集的強大功能,實現高速運算和儲存。Hadoop 專案中包括一個分散式的檔案系統HDFS 專案,一個分散式的並行程式設計框架MapReduce,以及包括Nutch 在內的諸多子專案。如果您是專業技術人員,本書將帶領你快速地進入雲端運算的世界,全面掌握Hadoop 及其相關技術,能幫助你使用Hadoop 技術解決目前面臨的問題。如果你是大專院校資訊及相關專業的學生,本書為你在課堂之外了解最新的IT 技術開啟了一扇窗戶,能幫助你拓寬視野,完善知識結構,為迎接未來的挑戰做好知識準備。本書內容第1 章 Hadoop 簡介1.1 什麼是Hadoop 1.1.1 Hadoop 概述 1.1.2 Hadoop 的歷史 1.1.3 Hadoop 的功能與作用 1.1.4 Hadoop 的優勢 1.1.5 Hadoop 的應用現狀和發展趨勢 1.2 Hadoop 專案及其結構 1.3 Hadoop 的體系結構 1.3.1 HDFS 的體系結構 1.3.2 MapReduce 的體系結構 1.4 Hadoop 與分散式開發 1.5 Hadoop 計算模型—MapReduce 1.6 Hadoop 的資料管理 1.6.1 HDFS 的資料管理 1.6.2 HBase 的資料管理 1.6.3 Hive 的資料管理 1.7 小結 第2 章 Hadoop 的安裝與設定2.1 在Linux 上安裝與設定Hadoop 2.1.1 安裝JDK 1.6 2.1.2 設定SSH 免密碼登入 2.1.3 安裝並執行Hadoop 2.2 在Windows 上安裝與設定Hadoop 2.2.1 安裝Cygwin 2.2.2 設定環境變數 2.2.3 安裝和啟動sshd 服務 2.2.4 設定SSH 免密碼登入 2.3 安裝和設定Hadoop 叢集 2.3.1 網路拓撲 2.3.2 定義叢集拓撲 2.3.3 建立和安裝Cluster 2.4 記錄檔分析及幾個小技巧 2.5 小結 第3 章 Hadoop 應用案例分析3.1 Hadoop 在Yahoo! 的應用 3.2 Hadoop 在eBay 的應用 3.3 Hadoop 在百度的應用 3.4 Hadoop 在Facebook 的應用 3.5 Hadoop 平台上的巨量資料排序 3.6 小結 參考文獻第4 章 MapReduce 計算模型4.1 為什麼要用MapReduce 4.2 MapReduce 計算模型 4.2.1 MapReduce Job 4.2.2 Hadoop 中的Hello World 程式 4.2.3 MapReduce 的資料流程和控制流 4.3 MapReduce 工作的最佳化 4.4 Hadoop 流 4.4.1 Hadoop 流的工作原理 4.4.2 Hadoop 流的指令 4.4.3 實戰案例:增加Bash 程式和Python 程式到Hadoop 流中 4.5 Hadoop Pipes 4.6 小結 4-24第5 章 開發MapReduce 應用程式5.1 系統參數的設定 5.2 設定開發環境 5.3 撰寫MapReduce 程式 5.3.1 Map 處理 5.3.2 Reduce 處理 5.4 本機測試 5.5 執行MapReduce 程式 5.5.1 打包 5.5.2 在本機模式下執行 5.5.3 在叢集上執行 5.6 網路使用者介面 5.6.1 JobTracker 頁面 5.6.2 工作頁面 5.6.3 傳回結果 5.6.4 工作頁面 5.6.5 工作細節頁面 5.7 性能最佳化 5.8 MapReduce 工作流 5.8.1 將問題分解成MapReduce 工作 5.8.2 執行相互相依的工作 5.9 小結 第6 章 MapReduce 應用案例6.1 單字計數 6.1.1 實例描述 6.1.2 設計想法 6.1.3 程式碼 6.1.4 程式解讀 6.1.5 程式執行 6.1.6 程式結果 6.2 去除重複資料 6.2.1 實例描述 6.2.2 設計想法 6.2.3 程式碼 6.3 排序 6.3.1 實例描述 6.3.2 設計想法 6.3.3 程式碼 6.4 單表關聯6.4.1 實例描述 6.4.2 設計想法 6.4.3 程式碼 6.5 多表關聯 6.5.1 實例描述 6.5.2 設計想法 6.5.3 程式碼 6.6 小結 第7 章 MapReduce 工作機制7.1 MapReduce 作業的執行流程 7.1.1 MapReduce 工作的執行總流程 7.1.2 傳送作業 7.1.3 初始化作業 7.1.4 分配工作 7.1.5 執行工作 7.1.6 更新工作執行進度和狀態 7.1.7 完成作業 7.2 錯誤處理機制 7.2.1 硬體故障 7.2.2 工作失敗 7.3 作業排程機制 7.4 shuffle 和排序 7.4.1 map 端 7.4.2 reduce 端 7.4.3 shuffle 過程的最佳化 7.5 工作執行 7.5.1 推測式執行 7.5.2 工作JVM 重用 7.5.3 跳過壞記錄 7.5.4 工作執行環境 7.6 小結 第8 章 Hadoop I O 操作8.1 I O 操作中的資料檢查 8.2 資料的壓縮 8.2.1 Hadoop 對壓縮工具的選擇 8.2.2 壓縮分割和輸入分割 8.2.3 在MapReduce 程式中使用壓縮 8.3 資料的I O 中序列化操作 8.3.1 Writable 類別 8.3.2 實現自己的Hadoop 資料型態 8.4 針對MapReduce 的檔案類別 8.4.1 SequenceFile 類別 8.4.2 MapFile 類別 8.5 小結 第9 章 HDFS 詳解9.1 Hadoop 的檔案系統 9.2 HDFS 簡介 9.3 HDFS 體系結構 9.3.1 HDFS 的相關概念 9.3.2 HDFS 的體系結構 9.4 HDFS 的基本操作 9.4.1 HDFS 的命令列操作 9.4.2 HDFS 的Web 介面 9.5 HDFS 常用Java API 詳解 9.5.1 使用Hadoop URL 讀取資料 9.5.2 使用FileSystem API 讀取資料 9.5.3 建立目錄 9.5.4 寫資料 9.5.5 刪除資料 9.5.6 檔案系統查詢 9.6 HDFS 中的讀寫資料流程 9.6.1 檔案的讀取 9.6.2 檔案的寫入 9.6.3 一致性模型 9.7 HDFS 指令詳解 9.7.1 透過distcp 進行並行複製 9.7.2 HDFS 的平衡 9.7.3 使用Hadoop 歸檔檔案 9.7.4 其他指令 9.8 小結 第10 章 Hadoop 的管理10.1 HDFS 檔案結構 10.2 Hadoop 的狀態監視和管理工具 10.2.1 稽核記錄檔 10.2.2 監控記錄檔 10.2.3 Metrics 10.2.4 Java 管理擴充 10.2.5 Ganglia 10.2.6 Hadoop 管理指令 10.3 Hadoop 叢集的維護 10.3.1 安全模式 10.3.2 Hadoop 的備份 10.3.3 Hadoop 的節點管理 10.3.4 系統升級 10.4 小結 第11 章 Hive 詳解11.1 Hive 簡介 11.1.1 Hive 的資料儲存 11.1.2 Hive 的中繼資料儲存 11.2 Hive 的基本操作 11.2.1 在叢集上安裝Hive 11.2.2 設定Hive 11.3 Hive QL 詳解 11.3.1 資料定義(DDL)操作 11.3.2 資料操作(DML) 11.3.3 SQL 操作 11.3.4 Hive QL 的使用實例 11.4 Hive 的網路(WebUI)介面 11.5 Hive 的JDBC 介面 11.6 Hive 的最佳化 11.7 小結 11-30第12 章 HBase 詳解12.1 HBase 簡介 12.2 HBase 的基本操作 12.2.1 HBase 的安裝 12.2.2 執行HBase 12.2.3 HBase Shell 12.2.4 HBase 設定 12.3 HBase 體系結構 12.4 HBase 資料模型 12.4.1 資料模型 12.4.2 概念檢視 12.4.3 實體檢視 12.5 HBase 與RDBMS 12.6 HBase 與HDFS 12.7 HBase 使用者端 12.8 Java API 12-2312.9 HBase 程式設計實例之MapReduce 12.10 模式設計 12.10.1 學生表 12.10.2 事件表 12.11 小結 第13 章 Mahout 詳解13.1 Mahout 簡介 13.2 Mahout 的安裝和設定 13.3 Mahout API 簡介 13.4 Mahout 中的聚類和分類 13.4.1 什麼是聚類和分類 13.4.2 Mahout 中的資料表示 13.4.3 將文字轉化成向量 13.4.4 Mahout 中的聚類、分類演算法 13.4.5 演算法應用實例 13.5 Mahout 應用:建立一個推薦引擎 13.5.1 推薦引擎簡介 13.5.2 使用Taste 建構一個簡單的推薦引擎 13.5.3 簡單分散式系統下基於產品的推薦系統簡介 13.6 小結 第14 章 Pig 詳解14.1 Pig 簡介 14.2 Pig 的安裝和設定 14.2.1 Pig 的安裝條件 14.2.2 Pig 的下載、安裝和設定 14.2.3 Pig 執行模式 14.3 Pig Latin 語言 14.3.1 Pig Latin 語言簡介14.3.2 Pig Latin 的使用 14.3.3 Pig Latin 的資料型態 14.3.4 Pig Latin 關鍵字 14.4 使用者定義函數 14.4.1 撰寫使用者定義函數 14.4.2 使用使用者定義函數 14.5 Pig 實例 14.5.1 Local 模式 14.5.2 MapReduce 模式 14.6 Pig 進階 14.6.1 資料實例 14.6.2 Pig 資料分析 14.7 小結 第15 章 ZooKeeper 詳解15.1 ZooKeeper 簡介 15.1.1 ZooKeeper 的設計目標 15.1.2 資料模型和階層命名空間 15.1.3 ZooKeeper 中的節點和臨時節點 15.1.4 ZooKeeper 的應用 15.2 ZooKeeper 的安裝和設定 15.2.1 在叢集上安裝ZooKeeper 15.2.2 設定ZooKeeper 15.2.3 執行ZooKeeper 15.3 ZooKeeper 的簡單操作 15.3.1 使用ZooKeeper 指令的簡單操作步驟 15.3.2 ZooKeeper API 的簡單使用 15.4 ZooKeeper 的特性 15.4.1 ZooKeeper 的資料模型 15.4.2 ZooKeeper 階段及狀態15.4.3 ZooKeeper Watches 15.4.4 ZooKeeper ACL 15.4.5 ZooKeeper 的一致性確保 15.5 ZooKeeper 的Leader 選舉 15.6 ZooKeeper 鎖服務 15.6.1 ZooKeeper 中的鎖機制 15.6.2 ZooKeeper 提供的一個寫鎖的實現 15.7 使用ZooKeeper 建立應用程式 15.8 小結 第16 章 Avro 詳解16.1 Avro 簡介 16.1.1 模式宣告 16.1.2 資料序列化16.1.3 資料排列順序 16.1.4 物件容器檔案 16.1.5 協定宣告 16.1.6 協定傳輸格式 16.1.7 模式解析 16.2 Avro 的C C++ 實現 16.3 Avro 的Java 實現 16.4 GenAvro(Avro IDL)語言 16.5 Avro SASL 概述 16.6 小結 第17 章 Chukwa 詳解17.1 Chukwa 簡介 17.2 Chukwa 架構 17.2.1 使用者端(Agent)及其資料模型 17.2.2 收集器(Collector)和分離解析器(Demux) 17.2.3 HICC 17.3 Chukwa 的可用性 17.4 Chukwa 叢集搭建 17.4.1 基本設定要求 17.4.2 安裝Chukwa 17.5 Chukwa 資料流程的處理 17.6 Chukwa 與其他監控系統比較 17.7 小結 參考文獻 第18 章 Hadoop 的常用外掛程式與開發18.1 Hadoop Studio 簡介和使用 18.1.1 Hadoop Studio 的安裝和設定 18.1.2 Hadoop Studio 的使用舉例 18.2 Hadoop Eclipse 簡介和使用 18.2.1 Hadoop Eclipse 安裝和設定 18.2.2 Hadoop Eclipse 的使用舉例 18.2.3 Hadoop Eclipse 外掛程式開發 18.3 Hadoop Streaming 簡介和使用 18.3.1 Hadoop Streaming 的使用舉例 18.3.2 使用Hadoop Streaming 時常見的問題 18.4 Hadoop Libhdfs 簡介和使用 18.4.1 Hadoop Libhdfs 安裝和設定 18.4.2 Hadoop Libhdfs API 簡介 18.4.3 Hadoop Libhdfs 的使用舉例 18.5 小結 附錄A 雲端運算線上檢測平台A.1 平台介紹 A.2 結構和功能 A.2.1 前景使用者介面的結構和功能 A.2.2 幕後程式執行的結構和功能 A.3 檢測流程 A.4 使用 A.4.1 功能使用 A.4.2 傳回結果介紹 A.4.3 使用注意事項 A.5 小結