Hadoop實戰

hzbook2008發表於2012-08-06
Hadoop實戰

媒體評論

  將網格計算、平行計算和虛擬化等技術融為一體的雲端計算技術已成為我們當下儲存和處理海量資料的最佳選擇之一。Hadoop的開源、高效能、高容錯、跨平臺等特點又使其成為架構雲端計算平臺的首選。本書以實踐為主,理論與實踐相結合,全面闡述了整個Hadoop技術體系,適合讀者系統地學習。強烈推薦!——Hadoop中文網
  
  目前,國內的很多網際網路企業都在使用或正準備使用Hadoop技術,這些企業都面臨著一個共同的難題:Hadoop方面的人才難求。Hadoop方面的人才之所以難找,一方面是因為Hadoop在國內應用的時間不長,從業人員並不多;另一方面是因為Hadoop技術本身較難以掌握,而且與涉及海量資料處理的實際生產環境密切相關。本書很好地把握住了當前Hadoop從業者的核心需求,不僅理論知識全面,更重要的是包含大量與實際生產環境相結合的案例,極具指導意義。——Hadoop使用者社群
  
  Hadoop可謂炙手可熱,在全球範圍內,已經有數量龐大的大中型網際網路公司開始使用Hadoop,國外的Amazon、Facebook、Yahoo!,國內的騰訊、百度、淘寶、阿里巴巴等都是成功應用Hadoop的典範。然而,Hadoop技術本身卻極為複雜,而且涉及眾多其他的技術,學習門檻比較高。本書從中初級讀者的需求出發,以實踐為導向,全面而系統地講解了Hadoop技術本身,以及與之相關的其他各種技術。對於想系統學習Hadoop和想增加實戰經驗的讀者來說,本書不可多得!——51CTO
 

作譯者

  陸嘉恆,中國人民大學副教授,新加坡國立大學博士,美國加利福尼亞大學爾灣分校(University of California, Irvine) 博士後。專注於雲端計算及其相關技術的研究,對Hadoop有較深入的研究,積累了豐富的實踐經驗。對分散式計算和海量資料處理有深刻的認識,主持並完成了多個國家863和自然科學基金專案的研究與實施。2009年入選新世紀優秀人才,2010年入選北京科技新星。主持《雲端計算概論》課程獲教育部-IBM精品課程稱號。
 

內容簡介



  本書是一本系統且極具實踐指導意義的hadoop工具書和參考書。內容全面,對hadoop整個技術體系進行了全面的講解,不僅包括hdfs和mapreduce這兩大核心內容,而且還包括hive、hbase、mahout、pig、zookeeper、avro、chukwa等與hadoop相關的子專案的內容。實戰性強,為各個知識點精心設計了大量經典的小案例,易於理解,可操作性強。
  全書一共18章:第1章全面介紹了hadoop的概念、優勢、專案結構、體系結構,以及它與分散式計算的關係;第2章詳細講解了hadoop叢集的安裝和配置,以及常用的日誌分析技巧;第3章分析了hadoop在yahoo!、ebay、facebook和百度的應用案例,以及hadoop平臺上海量資料的排序;第4-7章深入地講解了mapreduce計算模型、mapreduce應用的開發方法、mapreduce的工作機制,同時還列出了多個mapreduce的應用案例,涉及單詞計數、資料去重、排序、單表關聯和多表關聯等內容;第8-11章全面地闡述了hadoop的i/o操作、hdfs的原理與基本操作,以及hadoop的各種管理操作,如叢集的維護等;第12-17章詳細而系統地講解了hive、hbase、mahout、pig、zookeeper、avro、chukwa等所有與hadoop相關的子專案的原理及使用,以及這些子專案與hadoop的整合使用;第18章以例項的方式講解了常用hadoop外掛的使用和hadoop外掛的開發。
  本書既適合沒有hadoop基礎的初學者系統地學習,又適合有一定hadoop基礎但是缺乏實踐經驗的讀者實踐和參考。

前言

  為什麼寫這本書
  計算技術已經深刻地影響了我們的工作、學習和生活。分散式的雲端計算技術是當下IT領域最炙手可熱的話題,其發展速度非常迅速,潛力巨大,悄然改變著整個行業的面貌。雲端計算技術透過整合資源的方式,為降低成本和能耗提供了一種簡化的、集中的計算平臺。作為一種新興的技術,它將為IT產業帶來深刻的變革,相信人類會因此迎來一個新的資訊化時代!
  在學術界,政府和很多高校都十分重視對分散式的雲端計算技術的研究和投入;在產業界,各大IT公司也在投入大量的資源研究和開發相關的雲端計算產品,與之相關的新興技術和產品正在不斷湧現,傳統的資訊服務產品也在向雲端計算模式轉型。這一切都極大地推進了雲端計算技術的發展。
  Hadoop是Apache基金會的開源專案,為開發者提供了一個分散式系統的基礎架構,使用者可以在不瞭解分散式系統的底層細節的情況下開發分散式的應用,充分利用叢集的強大功能,實現高速運算和儲存。Hadoop專案中包括一個分散式的檔案系統HDFS專案,一個分散式的並行程式設計框架MapReduce,以及包括Nutch在內的諸多子專案。目前,Hadoop開源專案已經得到了Yahoo!、Facebook、中國移動、阿里巴巴、百度、騰訊等國內外大型網際網路企業的關注,並且已經被投入到了實際的產業應用中。在諸多的雲端計算技術中,Hadoop具有無與倫比的優勢,越來越多的公司和組織選擇使用Hadoop開源專案作為他們的解決方案。
  Hadoop技術本身較為複雜,而且涉及具體的應用場景時會變得更為複雜,很多人在學習的初級階段需要進行大量的摸索和實踐,然而目前這方面系統的參考資料卻非常少。為了便於所有想了解和掌握Hadoop技術的朋友學習並在學習中少走彎路,筆者將自己在該領域的經驗和積累凝聚成了這本書,希望能推動Hadoop及其相關技術在國內的發展。
  本書面向的讀者
  在編寫本書時,我們力圖使不同背景和職業的讀者都能從這本書中獲益。
  如果你是專業技術人員,本書將帶領你快速地進入雲端計算的世界,全面掌握Hadoop及其相關技術,能幫助你使用Hadoop技術解決當前面臨的問題。
  如果你是高等院校計算機及相關專業的學生,本書為你在課堂之外瞭解最新的IT技術開啟了一扇窗戶,能幫助你拓寬視野,完善知識結構,為迎接未來的挑戰做好知識儲備。
  在學習本書之前,大家應該具有如下的基礎:
  ·具有一定的分散式系統的基礎知識,對檔案系統的基本操作有一定的瞭解。
  ·有一定的Linux作業系統的基礎知識。
  ·有較好的程式設計基礎和閱讀程式碼的能力,尤其是要能夠熟練使用Java語言。
  ·對資料倉儲、系統監控、網路爬蟲等知識最好也能有一些瞭解。
  如何閱讀本書
  本書一共18章和一個附錄。前10章主要介紹了Apache Hadoop的common核心、MapReduce及檔案系統。從第11章開始,詳細講解了與Hadoop相關的其他專案,分別為:Hive、HBase、Mahout、Pig、ZooKeeper、Avro、Chukwa,以及Hadoop的常用外掛。此外,附錄中還包含一個簡單的雲端計算線上檢測平臺。
  在閱讀本書時,大家可以先系統地學習前10章的知識,目的是對Hadoop的核心內容有一個很好的理解。在此基礎上,大家可以對後面的章節進行選擇性的學習。這是因為在內容的編排上,各章的知識點是相對獨立的,各章之間是並行的關係。當然,如果時間允許,還是建議大家系統地學習全書的內容,這樣能夠對Hadoop系統的機制有一個完整的理解,為今後深入地研究和實踐Hadoop及雲端計算技術打下堅實的基礎。
  另外,我們希望大家在學習本書時能一邊閱讀,一邊根據書中的指導動手實踐,親自實踐本書中所給出的程式設計範例。例如,先搭建一個自己的雲平臺,如果條件受限,可以選擇偽分佈的方式。
  致謝
  在本書的編寫過程中,還有很多Hadoop領域的實踐者和研究者為本書做了大量的工作,他們是馮博亮、程明、徐文韜、張林林、朱儁良、許翔、陳東偉、譚果、林春彬等,在此特別表示感謝。
.  線上資源及勘誤
  在本書的附錄中,我們提供了一個基於Hadoop的雲端計算線上測試平臺(),大家可以先註冊一個免費賬戶,然後立即體驗Hadoop平臺,線上編寫MapReduce應用並進行自動驗證。如果大家希望獲得該平臺的驗證碼,或獲得完全程式設計測試和理論測試的許可權,請發郵件到jiahenglu@gmail.com索取密碼。
  本書官方網站地址:,本書的勘誤、討論以及相關資料等都會在該網站上釋出和更新。
  在本書的撰寫和相關技術的研究中,儘管筆者投入了大量的精力、付出了艱辛的努力,然而受知識水平所限,錯誤和疏漏之處在所難免,懇請大家批評指正。如果有任何問題和建議,可傳送郵件至jiahenglu@gmail.com或jiahenglu@ruc.edu.cn。
  陸嘉恆
  2011年6月於北京

目錄

《hadoop實戰》
前 言
第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.3.1 hdfs 的體系結構/6
1.3.2 mapreduce 的體系結構/7
1.4 hadoop 與分散式開發/7
1.5 hadoop 計算模型—mapreduce/10
1.6 hadoop 的資料管理/10
1.6.1 hdfs 的資料管理/11
1.6.2 hbase 的資料管理/12
1.6.3 hive 的資料管理/15
1.7 小結/17
.第2章 hadoop 的安裝與配置 /18
2.1 在linux 上安裝與配置hadoop/19
2.1.1 安裝jdk 1.6/19
2.1.2 配置ssh 免密碼登入/20
2.1.3 安裝並執行hadoop/21
2.2 在windows 上安裝與配置hadoop/23
2.2.1 安裝cygwin/24
2.2.2 配置環境變數/24
2.2.3 安裝和啟動sshd 服務/24
2.2.4 配置ssh 免密碼登入/24
2.3 安裝和配置hadoop 叢集/25
2.3.1 網路拓撲/25
2.3.2 定義叢集拓撲/25
2.3.3 建立和安裝cluster /26
2.4 日誌分析及幾個小技巧/32
2.5 小結/33
第3章 hadoop 應用案例分析/35
3.1 hadoop 在yahoo !的應用/36
3.2 hadoop 在ebay 的應用/38
3.3 hadoop 在百度的應用/40
3.4 hadoop 在facebook 的應用/43
3.5 hadoop 平臺上的海量資料排序/46
3.6 小結/53
第4章 mapreduce 計算模型/54
4.1 為什麼要用mapreduce/55
4.2 mapreduce 計算模型 /56
4.2.1 mapreduce job/56
4.2.2 hadoop 中的hello world 程式/56
4.2.3 mapreduce 的資料流和控制流/64
4.3 mapreduce 任務的最佳化/65
4.4 hadoop 流 /67
4.4.1 hadoop 流的工作原理/68
4.4.2 hadoop 流的命令/69
4.4.3 實戰案例:新增bash 程式和python 程式到hadoop 流中/70
4.5 hadoop pipes/72
4.6 小結 /74
第5章 開發mapreduce 應用程式/75
5.1 系統引數的配置/76
5.2 配置開發環境 /78
5.3 編寫mapreduce 程式/79
5.3.1 map 處理/79
5.3.2 reduce 處理/80
5.4 本地測試 /81
5.5 執行mapreduce 程式 /83
5.5.1 打包/84
5.5.2 在本地模式下執行/85
5.5.3 在叢集上執行/86
5.6 網路使用者介面/87
5.6.1 jobtracker 頁面/87
5.6.2 工作頁面/88
5.6.3 返回結果/90
5.6.4 任務頁面/93
5.6.5 任務細節頁面/93
5.7 效能調優/94
5.8 mapreduce 工作流/96
5.8.1 將問題分解成mapreduce 工作/97
5.8.2 執行相互依賴的工作/97
5.9 小結/98
第6章 mapreduce 應用案例/99
6.1 單詞計數/100
6.1.1 例項描述/100
6.1.2 設計思路/100
6.1.3 程式程式碼/101
6.1.4 程式碼解讀/102
6.1.5 程式執行/103
6.1.6 程式碼結果/103
6.2 資料去重/104
6.2.1 例項描述/104
6.2.2 設計思路/105
6.2.3 程式程式碼/105
6.3 排序/106
6.3.1 例項描述/106
6.3.2 設計思路/107
6.3.3 程式程式碼/107
6.4 單表關聯/109
6.4.1 例項描述/109
6.4.2 設計思路/110
6.4.3 程式程式碼/110
6.5 多表關聯/113
6.5.1 例項描述/113
6.5.2 設計思路/114
6.5.3 程式程式碼/114
6.6 小結/116
第7章 mapreduce 工作機制/117
7.1 mapreduce 作業的執行流程/118
7.1.1 mapreduce 任務的執行總流程/118
7.1.2 提交作業/119
7.1.3 初始化作業/121
7.1.4 分配任務/123
7.1.5 執行任務/125
7.1.6 更新任務執行進度和狀態/126
7.1.7 完成作業/127
7.2 錯誤處理機制 /127
7.2.1 硬體故障/127
7.2.2 任務失敗/128
7.3 作業排程機制 /128
7.4 shuffle 和排序/129
7.4.1 map 端/130
7.4.2 reduce 端/131
7.4.3 shuffle 過程的最佳化/132
7.5 任務執行 /133
7.5.1 推測式執行/133
7.5.2 任務jvm 重用/134
7.5.3 跳過壞記錄/134
7.5.4 任務執行環境/135
7.6 小結/136
第8章 hadoop i/o 操作/137
8.1 i/o 操作中的資料檢查/138
8.2 資料的壓縮 /142
8.2.1 hadoop 對壓縮工具的選擇/142
8.2.2 壓縮分割和輸入分割/143
8.2.3 在mapreduce 程式中使用壓縮/143
8.3 資料的i/o 中序列化操作/144
8.3.1 writable 類/144
8.3.2 實現自己的hadoop 資料型別/152
8.4 針對mapreduce 的檔案類/153
8.4.1 sequencefile 類/154
8.4.2 mapfile 類/159
8.5 小結/161
第9章 hdfs 詳解/162
9.1 hadoop 的檔案系統/163
9.2 hdfs 簡介/165
9.3 hdfs 體系結構/166
9.3.1 hdfs 的相關概念/166
9.3.2 hdfs 的體系結構/167
9.4 hdfs 的基本操作/169
9.4.1 hdfs 的命令列操作/169
9.4.2 hdfs 的web 介面/171
9.5 hdfs 常用java api 詳解/173
9.5.1 使用hadoop url 讀取資料/173
9.5.2 使用filesystem api 讀取資料/174
9.5.3 建立目錄/176
9.5.4 寫資料/177
9.5.5 刪除資料/178
9.5.6 檔案系統查詢/178
9.6 hdfs 中的讀寫資料流/182
9.6.1 檔案的讀取/182
9.6.2 檔案的寫入/184
9.6.3 一致性模型/185
9.7 hdfs 命令詳解/186
9.7.1 透過distcp 進行並行複製/186
9.7.2 hdfs 的平衡/187
9.7.3 使用hadoop 歸檔檔案/188
9.7.4 其他命令/190
9.8 小結/194
第10章 hadoop 的管理/195
10.1 hdfs 檔案結構/196
10.2 hadoop 的狀態監視和管理工具/200
10.2.1 審計日誌/200
10.2.2 監控日誌/200
10.2.3 metrics/201
10.2.4 java 管理擴充套件 /203
10.2.5 ganglia/204
10.2.6 hadoop 管理命令/206
10.3 hadoop 叢集的維護/210
10.3.1 安全模式/210
10.3.2 hadoop 的備份/211
10.3.3 hadoop 的節點管理/212
10.3.4 系統升級/214
10.4 小結/216
第11章 hive 詳解/217
11.1 hive 簡介/218
11.1.1 hive 的資料儲存/218
11.1.2 hive 的後設資料儲存/220
11.2 hive 的基本操作/220
11.2.1 在叢集上安裝hive/220
11.2.2 配置hive/222
11.3 hive ql 詳解/224
11.3.1 資料定義(ddl)操作/224
11.3.2 資料操作(dml)/231
11.3.3 sql 操作/233
11.3.4 hive ql 的使用例項/235
11.4 hive 的網路(webui)介面/237
11.5 hive 的jdbc 介面/238
11.6 hive 的最佳化/241
11.7 小結/243
第12章 hbase 詳解/244
12.1 hbase 簡介/245
12.2 hbase 的基本操作/245
12.2.1 hbase 的安裝/245
12.2.2 執行hbase /249
12.2.3 hbase shell/250
12.2.4 hbase 配置/254
12.3 hbase 體系結構/255
12.4 hbase 資料模型/259
12.4.1 資料模型/259
12.4.2 概念檢視/260
12.4.3 物理檢視/260
12.5 hbase 與rdbms/261
12.6 hbase 與hdfs/262
12.7 hbase 客戶端/262
12.8 java api /263
12.9 hbase 程式設計例項之mapreduce /270
12.10 模式設計/273
12.10.1 學生表/273
12.10.2 事件表/274
12.11 小結/275
第13章 mahout 詳解/276
13.1 mahout 簡介/277
13.2 mahout 的安裝和配置/277
13.3 mahout api 簡介/278
13.4 mahout 中的聚類和分類/280
13.4.1 什麼是聚類和分類/280
13.4.2 mahout 中的資料表示/281
13.4.3 將文字轉化成向量/282
13.4.4 mahout 中的聚類、分類演算法/283
13.4.5 演算法應用例項/288
13.5 mahout 應用:建立一個推薦引擎/292
13.5.1 推薦引擎簡介/292
13.5.2 使用taste 構建一個簡單的推薦引擎/292
13.5.3 簡單分散式系統下基於產品的推薦系統簡介/294
13.6 小結/297
第14章 pig 詳解/299
14.1 pig 簡介/300
14.2 pig 的安裝和配置 /300
14.2.1 pig 的安裝條件/300
14.2.2 pig 的下載、安裝和配置/301
14.2.3 pig 執行模式/301
14.3 pig latin 語言/304
14.3.1 pig latin 語言簡介/304
14.3.2 pig latin 的使用/305
14.3.3 pig latin 的資料型別/307
14.3.4 pig latin 關鍵字/308
14.4 使用者定義函式 /313
14.4.1 編寫使用者定義函式/313
14.4.2 使用使用者定義函式/315
14.5 pig 例項 /315
14.5.1 local 模式/316
14.5.2 mapreduce 模式/318
14.6 pig 進階/319
14.6.1 資料例項/319
14.6.2 pig 資料分析/320
14.7 小結/324
第15章 zookeeper 詳解/326
15.1 zookeeper 簡介/327
15.1.1 zookeeper 的設計目標/327
15.1.2 資料模型和層次名稱空間/328
15.1.3 zookeeper 中的節點和臨時節點/328
15.1.4 zookeeper 的應用/329
15.2 zookeeper 的安裝和配置/329
15.2.1 在叢集上安裝zookeeper/329
15.2.2 配置zookeeper/334
15.2.3 執行zookeeper/336
15.3 zookeeper 的簡單操作/339
15.3.1 使用zookeeper 命令的簡單操作步驟/339
15.3.2 zookeeper api 的簡單使用/340
15.4 zookeeper 的特性/343
15.4.1 zookeeper 的資料模型/343
15.4.2 zookeeper 會話及狀態/345
15.4.3 zookeeper watches/346
15.4.4 zookeeper acl/346
15.4.5 zookeeper 的一致性保證/347
15.5 zookeeper 的leader 選舉/348
15.6 zookeeper 鎖服務/348
15.6.1 zookeeper 中的鎖機制/349
15.6.2 zookeeper 提供的一個寫鎖的實現/350
15.7 使用zookeeper 建立應用程式 /351
15.8 小結/355
第16章 avro 詳解/356
16.1 avro 簡介/357
16.1.1 模式宣告/358
16.1.2 資料序列化/362
16.1.3 資料排列順序/364
16.1.4 物件容器檔案 /365
16.1.5 協議宣告/367
16.1.6 協議傳輸格式/368
16.1.7 模式解析/370
16.2 avro 的c/c++ 實現/371
16.3 avro 的java 實現/382
16.4 genavro(avro idl)語言/385
16.5 avro sasl 概述/390
16.6 小結/392
第17章 chukwa 詳解 /393
17.1 chukwa 簡介/394
17.2 chukwa 架構/395
17.2.1 客戶端(agent)及其資料模型/395
17.2.2 收集器(collector)和分離解析器(demux)/396
17.2.3 hicc/398
17.3 chukwa 的可靠性/399
17.4 chukwa 叢集搭建/400
17.4.1 基本配置要求/400
17.4.2 安裝chukwa/400
17.5 chukwa 資料流的處理/407
17.6 chukwa 與其他監控系統比較/408
17.7 小結/409
第18章 hadoop 的常用外掛與開發/411
18.1 hadoop studio 簡介和使用/412
18.1.1 hadoop studio 的安裝和配置/412
18.1.2 hadoop studio 的使用舉例/413
18.2 hadoop eclipse 簡介和使用/419
18.2.1 hadoop eclipse 安裝和配置/420
18.2.2 hadoop eclipse 的使用舉例/420
18.2.3 hadoop eclipse 外掛開發/421
18.3 hadoop streaming 簡介和使用/422
18.3.1 hadoop streaming 的使用舉例/426
18.3.2 使用hadoop streaming 時常見的問題/428
18.4 hadoop libhdfs 簡介和使用/430
18.4.1 hadoop libhdfs 安裝和配置/430
18.4.2 hadoop libhdfs api 簡介/430
18.4.3 hadoop libhdfs 的使用舉例/431
18.5 小結/432
附錄a 雲端計算線上檢測平臺/434
a.1 平臺介紹/435
a.2 結構和功能/435
a.2.1 前臺使用者介面的結構和功能/435
a.2.2 後臺程式執行的結構和功能/437
a.3 檢測流程/437
a.4 使用/438
a.4.1 功能使用/438
a.4.2 返回結果介紹/439
a.4.3 使用注意事項/440
a.5 小結/441


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16502878/viewspace-739991/,如需轉載,請註明出處,否則將追究法律責任。

相關文章