點選上圖圖購買:

編輯推薦

《Hadoop實戰(第2版)》編輯推薦:第1版廣受好評,第2版基於Hadoop及其相關技術最新版本撰寫,從多角度做了全面的修訂和補充。不僅詳細講解了新一代的Hadoop技術,而且全面介紹了Hive、HBase、Mahout、Pig、ZooKeeper、Avro、Chukwa等重要技術,是系統學習Hadoop技術的首選之作。

媒體推薦

經過學術界和業界近10年的努力,Hadoop技術已經趨於完善而且應用廣泛,幾乎已經成為Big Data領域的事實標準。Hadoop技術本身比較複雜,而且還涉及Pig、ZooKeeper、Hive、HBase等一系列技術,學習門檻比較高,對於初學者和基礎不太紮實的讀者而言,有一本適合系統學習的Hadoop圖書顯得十分重要。本書即是專門為這兩類讀者量身定做的:第一,它的內容非常全面和前沿,不僅講解了最新的Hadoop技術和第二代MapReduce,還講解了涉及的所有周邊技術,能滿足系統學習的需求;第二,實戰性非常強,不僅很多知識點配有精心設計的小案例,而且有完整的企業級案例,能滿足操作實踐的需求;第三,這一版在上一版的基礎上根據最新的技術做了更新和補充,能滿足讀者學習最新技術的需求。本書第1版不僅取得了好的銷量,而且廣受好評,第2版在內容上有很大的提升,相信能讓更多的讀者從中受益。
——EasyHadoop 國內專業的Hadooop社群,致力於讓Hadoop大資料分析更簡單

作者簡介

陸嘉恆,資深資料庫專家和雲端計算技術專家,對Hadoop及其相關技術有非常深入的研究,主持了多個分散式雲端計算專案的研究與實施,積累了豐富的實踐經驗。獲得新加坡國立大學博士學位,美國加利福尼亞大學爾灣分校(University of California,Irvine)博士後,現為中國人民大學教授,博士生導師。此外,他對資料探勘和Web資訊搜尋等技術也有深刻的認識。

目錄

前言
第1章 Hadoop簡介 1
1.1 什麼是Hadoop 2
1.1.1 Hadoop概述 2
1.1.2 Hadoop的歷史 2
1.1.3 Hadoop的功能與作用 2
1.1.4 Hadoop的優勢 3
1.1.5 Hadoop應用現狀和發展趨勢 3
1.2 Hadoop專案及其結構 3
1.3 Hadoop體系結構 6
1.4 Hadoop與分散式開發 7
1.5 Hadoop計算模型—MapReduce 10
1.6 Hadoop資料管理 10
1.6.1 HDFS的資料管理 10
1.6.2 HBase的資料管理 12
1.6.3 Hive的資料管理 13
1.7 Hadoop叢集安全策略 15
1.8 本章小結 17
第2章 Hadoop的安裝與配置 19
2.1 在Linux上安裝與配置Hadoop 20
2.1.1 安裝JDK 1.6 20
2.1.2 配置SSH免密碼登入 21
2.1.3 安裝並執行Hadoop 22
2.2 在Mac OSX上安裝與配置Hadoop 24
2.2.1 安裝Homebrew 24
2.2.2 使用Homebrew安裝Hadoop 25
2.2.3 配置SSH和使用Hadoop 25
2.3 在Windows上安裝與配置Hadoop 25
2.3.1 安裝JDK 1.6或更高版本 25
2.3.2 安裝Cygwin 25
2.3.3 配置環境變數 26
2.3.4 安裝sshd服務 26
2.3.5 啟動sshd服務 26
2.3.6 配置SSH免密碼登入 26
2.3.7 安裝並執行Hadoop 26
2.4 安裝和配置Hadoop叢集 27
2.4.1 網路拓撲 27
2.4.2 定義叢集拓撲 27
2.4.3 建立和安裝Cluster 28
2.5 日誌分析及幾個小技巧 34
2.6 本章小結 35
第3章 MapReduce計算模型 36
3.1 為什麼要用MapReduce 37
3.2 MapReduce計算模型 38
3.2.1 MapReduce Job 38
3.2.2 Hadoop中的Hello World程式 38
3.2.3 MapReduce的資料流和控制流 46
3.3 MapReduce任務的優化 47
3.4 Hadoop流 49
3.4.1 Hadoop流的工作原理 50
3.4.2 Hadoop流的命令 51
3.4.3 兩個例子 52
3.5 Hadoop Pipes 54
3.6 本章小結 56
第4章 開發MapReduce應用程式 57
4.1 系統引數的配置 58
4.2 配置開發環境 60
4.3 編寫MapReduce程式 60
4.3.1 Map處理 60
4.3.2 Reduce處理 61
4.4 本地測試 62
4.5 執行MapReduce程式 62
4.5.1 打包 64
4.5.2 在本地模式下執行 64
4.5.3 在叢集上執行 64
4.6 網路使用者介面 65
4.6.1 JobTracker頁面 65
4.6.2 工作頁面 65
4.6.3 返回結果 66
4.6.4 任務頁面 67
4.6.5 任務細節頁面 67
4.7 效能調優 68
4.7.1 輸入採用大檔案 68
4.7.2 壓縮檔案 68
4.7.3 過濾資料 69
4.7.4 修改作業屬性 71
4.8 MapReduce工作流 72
4.8.1 複雜的Map和Reduce函式 72
4.8.2 MapReduce Job中全域性共享資料 74
4.8.3 連結MapReduce Job 75
4.9 本章小結 77
第5章 MapReduce應用案例 79
5.1 單詞計數 80
5.1.1 例項描述 80
5.1.2 設計思路 80
5.1.3 程式程式碼 81
5.1.4 程式碼解讀 82
5.1.5 程式執行 83
5.1.6 程式碼結果 83
5.1.7 程式碼資料流 84
5.2 資料去重 85
5.2.1 例項描述 85
5.2.2 設計思路 86
5.2.3 程式程式碼 86
5.3 排序 87
5.3.1 例項描述 87
5.3.2 設計思路 88
5.3.3 程式程式碼 89
5.4 單表關聯 91
5.4.1 例項描述 91
5.4.2 設計思路 92
5.4.3 程式程式碼 92
5.5 多表關聯 95
5.5.1 例項描述 95
5.5.2 設計思路 96
5.5.3 程式程式碼 96
5.6 本章小結 98
第6章 MapReduce工作機制 99
6.1 MapReduce作業的執行流程 100
6.1.1 MapReduce任務執行總流程 100
6.1.2 提交作業 101
6.1.3 初始化作業 103
6.1.4 分配任務 104
6.1.5 執行任務 106
6.1.6 更新任務執行進度和狀態 107
6.1.7 完成作業 108
6.2 錯誤處理機制 108
6.2.1 硬體故障 109
6.2.2 任務失敗 109
6.3 作業排程機制 110
6.4 Shuffle和排序 111
6.4.1 Map端 111
6.4.2 Reduce端 113
6.4.3 shuffle過程的優化 114
6.5 任務執行 114
6.5.1 推測式執行 114
6.5.2 任務JVM重用 115
6.5.3 跳過壞記錄 115
6.5.4 任務執行環境 116
6.6 本章小結 117
第7章 Hadoop I O操作 118
7.1 I O操作中的資料檢查 119
7.2 資料的壓縮 126
7.2.1 Hadoop對壓縮工具的選擇 126
7.2.2 壓縮分割和輸入分割 127
7.2.3 在MapReduce程式中使用壓縮 127
7.3 資料的I O中序列化操作 128
7.3.1 Writable類 128
7.3.2 實現自己的Hadoop資料型別 137
7.4 針對Mapreduce的檔案類 139
7.4.1 SequenceFile類 139
7.4.2 MapFile類 144
7.4.3 ArrayFile、SetFile和BloomMapFile 146
7.5 本章小結 148
第8章 下一代MapReduce:YARN 149
8.1 MapReduce V2設計需求 150
8.2 MapReduce V2主要思想和架構 151
8.3 MapReduce V2設計細節 153
8.4 MapReduce V2優勢 156
8.5 本章小結 156
第9章 HDFS詳解 157
9.1 Hadoop的檔案系統 158
9.2 HDFS簡介 160
9.3 HDFS體系結構 161
9.3.1 HDFS的相關概念 161
9.3.2 HDFS的體系結構 162
9.4 HDFS的基本操作 164
9.4.1 HDFS的命令列操作 164
9.4.2 HDFS的Web介面 165
9.5 HDFS常用Java API詳解 166
9.5.1 使用Hadoop URL讀取資料 166
9.5.2 使用FileSystem API讀取資料 167
9.5.3 建立目錄 169
9.5.4 寫資料 169
9.5.5 刪除資料 171
9.5.6 檔案系統查詢 171
9.6 HDFS中的讀寫資料流 175
9.6.1 檔案的讀取 175
9.6.2 檔案的寫入 176
9.6.3 一致性模型 178
9.7 HDFS命令詳解 179
9.7.1 通過distcp進行並行複製 179
9.7.2 HDFS的平衡 180
9.7.3 使用Hadoop歸檔檔案 180
9.7.4 其他命令 183
9.8 WebHDFS 186
9.8.1 WebHDFS的配置 186
9.8.2 WebHDFS命令 186
9.9 本章小結 190
第10章 Hadoop的管理 191
10.1 HDFS檔案結構 192
10.2 Hadoop的狀態監視和管理工具 196
10.2.1 審計日誌 196
10.2.2 監控日誌 196
10.2.3 Metrics 197
10.2.4 Java管理擴充套件 199
10.2.5 Ganglia 200
10.2.6 Hadoop管理命令 202
10.3 Hadoop叢集的維護 206
10.3.1 安全模式 206
10.3.2 Hadoop的備份 207
10.3.3 Hadoop的節點管理 208
10.3.4 系統升級 210
10.4 本章小結 212
第11章 Hive詳解 213
11.1 Hive簡介 214
11.1.1 Hive的資料儲存 214
11.1.2 Hive的後設資料儲存 216
11.2 Hive的基本操作 216
11.2.1 在叢集上安裝Hive 216
11.2.2 配置MySQL儲存Hive後設資料 218
11.2.3 配置Hive 220
11.3 Hive QL詳解 221
11.3.1 資料定義(DDL)操作 221
11.3.2 資料操作(DML) 231
11.3.3 SQL操作 233
11.3.4 Hive QL使用例項 235
11.4 Hive網路(Web UI)介面 237
11.4.1 Hive網路介面配置 237
11.4.2 Hive網路介面操作例項 238
11.5 Hive的JDBC介面 241
11.5.1 Eclipse環境配置 241
11.5.2 程式例項 241
11.6 Hive的優化 244
11.7 本章小結 246
第12章 HBase詳解 247
12.1 HBase簡介 248
12.2 HBase的基本操作 249
12.2.1 HBase的安裝 249
12.2.2 執行HBase 253
12.2.3 HBase Shell 255
12.2.4 HBase配置 258
12.3 HBase體系結構 260
12.3.1 HRegion 260
12.3.2 HRegion伺服器 261
12.3.3 HBase Master伺服器 262
12.3.4 ROOT表和META表 262
12.3.5 ZooKeeper 263
12.4 HBase資料模型 263
12.4.1 資料模型 263
12.4.2 概念檢視 264
12.4.3 物理檢視 264
12.5 HBase與RDBMS 265
12.6 HBase與HDFS 266
12.7 HBase客戶端 266
12.8 Java API 267
12.9 HBase程式設計 273
12.9.1 使用Eclipse開發HBase應用程式 273
12.9.2 HBase程式設計 275
12.9.3 HBase與MapReduce 278
12.10 模式設計 280
12.10.1 模式設計應遵循的原則 280
12.10.2 學生表 281
12.10.3 事件表 282
12.11 本章小結 283
第13章 Mahout詳解 284
13.1 Mahout簡介 285
13.2 Mahout的安裝和配置 285
13.3 Mahout API簡介 288
13.4 Mahout中的頻繁模式挖掘 290
13.4.1 什麼是頻繁模式挖掘 290
13.4.2 Mahout中的頻繁模式挖掘 290
13.5 Mahout中的聚類和分類 292
13.5.1 什麼是聚類和分類 292

序言

為什麼寫這本書
計算技術已經改變了我們的工作、學習和生活。分散式的雲端計算技術是當下IT領域最熱門的話題之一,它通過整合資源,為降低成本和能源消耗提供了一種簡化、集中的計算平臺。這種低成本、高擴充套件、高效能的特點促使其迅速發展,遍地開發,悄然改變著整個行業的面貌。社會各界對雲端計算的廣泛研究和應用無疑證明了這一點:在學術界,政府和很多高校十分重視對雲端計算技術的研究和投入;在產業界,各大IT公司也在研究和開發相關的雲端計算產品上投入了大量的資源。這些研究和應用推動與雲端計算相關的新興技術和產品不斷湧現,傳統的資訊服務產品向雲端計算模式轉型。
Hadoop作為Apache基金會的開源專案,是雲端計算研究和應用最具代表性的產品。Hadoop分散式框架為開發者提供了一個分散式系統的基礎架構,使用者可以在不瞭解分散式系統底層細節的情況下開發分散式的應用,充分利用由Hadoop統一起來的叢集儲存資源、網路資源和計算資源,實現基於海量資料的高速運算和儲存。
在編寫本書第一版時,鑑於Hadoop技術本身和應用環境較為複雜,入門和實踐難度較大,而關於Hadoop的參考資料又非常少,筆者根據自己的實際研究和使用經歷,理論與實踐並重,從基礎出發,為讀者全面呈現了Hadoop的相關知識,旨在為Hadoop學習者提供一本工具書。但是時至今日,Hadoop的版本已從本書第一版介紹的0.20升級至正式版1.0,讀者的需求也從入門發展到更加深入地瞭解Hadoop的實現細節,瞭解Hadoop的更新和發展的趨勢,瞭解Hadoop在企業中的應用。雖然本書第一版受到廣大Hadoop學習者的歡迎,但是為了保持對最新版Hadoop的支援,進一步滿足讀者的需求,繼續推動Hadoop技術在國內的普及和發展,筆者不惜時間和精力,蒐集資料,親自實踐,編寫了本書第二版。
第2版與第1版的區別
基於Hadoop 1.0版本和相關專案的最新版,本書在第1版的基礎上進行了更新和調整:
每章都增加了新內容(如第1章增加了與Hadoop安全相關的知識,第2增加了在Max OS X系統上安裝Hadoop的介紹,第9章增加了WebHDFS等);
部分章節深入剖析了Hadoop原始碼;
增加了對Hadoop介面及實踐方面的介紹(附錄C和附錄D);
增加了對下一代MapReduce的介紹(第8章);
將企業應用介紹移到本書最後並更新了內容(第19章);
增加了對Hadoop安裝和程式碼執行的集中介紹(附錄B)。
本書面向的讀者
在編寫本書時,筆者力圖使不同背景、職業和層次的讀者都能從這本書中獲益。
如果你是專業技術人員,本書將帶領你深入雲端計算的世界,全面掌握Hadoop及其相關技術細節,幫助你使用Hadoop技術解決當前面臨的問題。
如果你是系統架構人員,本書將成為你搭建Hadoop叢集、管理叢集,並迅速定位和解決問題的工具書。
如果你是高等院校計算機及相關專業的學生,本書將為你在課堂之外瞭解最新的IT技術開啟了一扇窗戶,幫助你拓寬視野,完善知識結構,為迎接未來的挑戰做好知識儲備。
在學習本書之前,大家應該具有如下的基礎:
要有一定的分散式系統的基礎知識,對檔案系統的基本操作有一定的瞭解。
要有一定的Linux作業系統的基礎知識。
有較好的程式設計基礎和閱讀程式碼的能力,尤其是要能夠熟練使用Java語言。
對資料庫、資料倉儲、系統監控,以及網路爬蟲等知識最好也能有一些瞭解。
如何閱讀本書
從整體內容上講,本書包括19章和4個附錄。前10章、第18章、第19章和4個附錄主要介紹了Hadoop背景知識、Hadoop叢集安裝和程式碼執行、MapReduce機制及程式設計知識、HDFS實現細節及管理知識、Hadoop應用。第11章至第17章結合最新版本詳細介紹了與Hadoop相關的其他專案,分別為Hive、HBase、Mahout、Pig、ZooKeeper、Avro、Chukwa,以備讀者擴充套件知識面之用。
在閱讀本書時,筆者建議大家先系統地學習Hadoop部分的理論知識(第1章、第3章、第6章至第10章),這樣可對Hadoop的核心內容和實現機制有一個很好的理解。在此基礎上,讀者可進一步學習Hadoop部分的實踐知識(第2章、第4章、第5章、第18章、第19章和4個附錄),嘗試搭建自己的Hadoop叢集,編寫並執行自己的MapReduce程式碼。對於本書中關於Hadoop相關專案的介紹,大家可以有選擇地學習。在內容的編排上,各章的知識點是相對獨立的,是並行的關係,因此大家可以有選擇地進行學習。當然,如果時間允許,還是建議大家系統地學習全書的內容,這樣能夠對Hadoop系統的機制有一個完整而系統的理解,為今後深入地研究和實踐Hadoop及雲端計算技術打下堅實的基礎。
另外,筆者希望大家在學習本書時能一邊閱讀,一邊根據書中的指導動手實踐,親自實踐本書中所給出的程式設計範例。例如,先搭建一個自己的雲平臺,如果條件受限,可以選擇偽分佈的方式。
致謝
在本書的編寫過程中,很多Hadoop方面的實踐者和研究者做了大量的工作,他們是馮博亮、程明、徐文韜、張林林、朱儁良、許翔、陳東偉、譚果、林春彬等,在此表示感謝。
陸嘉恆
2012年6月於北京

文摘

第1章
Hadoop簡介
本章內容
什麼是Hadoop
Hadoop專案及其結構
Hadoop體系結構
Hadoop與分散式開發
Hadoop計算模型—MapReduce
Hadoop資料管理
Hadoop叢集安全策略
本章小結
1.1 什麼是Hadoop
1.1.1 Hadoop概述
Hadoop是Apache軟體基金會旗下的一個開源分散式計算平臺。以Hadoop分散式檔案系統(Hadoop Distributed File System,HDFS)和MapReduce(Google MapReduce的開源實現)為核心的Hadoop為使用者提供了系統底層細節透明的分散式基礎架構。HDFS的高容錯性、高伸縮性等優點允許使用者將Hadoop部署在低廉的硬體上,形成分散式系統;MapReduce分散式程式設計模型允許使用者在不瞭解分散式系統底層細節的情況下開發並行應用程式。所以使用者可以利用Hadoop輕鬆地組織計算機資源,從而搭建自己的分散式計算平臺,並且可以充分利用叢集的計算和儲存能力,完成海量資料的處理。經過業界和學術界長達10年的錘鍊,目前的Hadoop 1.0.1已經趨於完善,在實際的資料處理和分析任務中擔當著不可替代的角色。
點選下圖圖購買: