-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Hadoop技術內幕:深入解析YARN架構設計與實現原理

( 簡體 字)
作者:董西成 著類別:1. -> 程式設計 -> 雲計算
譯者:
出版社:機械工業出版社Hadoop技術內幕:深入解析YARN架構設計與實現原理 3dWoo書號: 37171
詢問書籍請說出此書號!

缺書
NT售價: 345

出版日:11/1/2013
頁數:376
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111445340
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

寫這本書

在互聯網巨頭的帶動下,開源軟件Hadoop的應用變得越來越廣泛,目前互聯網、金融、銀行、零售等行業均在使用或者嘗試使用Hadoop。IDC對未來幾年中國的預測中就專門提到了大數據,其認為未來幾年,會有越來越多的企業級用戶試水大數據平臺和應用,而這之中,Hadoop將成為最耀眼的“明星”。

盡管Hadoop整個生態系統是開源的,但由于它包含的軟件種類過多,且版本升級過快,大部分公司,尤其是一些中小型公司,難以在有限的時間內快速掌握Hadoop蘊含的價值。此外,Hadoop自身版本的多樣化也給很多研發人員帶來了很大的學習負擔,盡管當前市面上已有很多參考書籍,但遺憾的是,能夠深入剖析Hadoop內部實現細節的書籍少之又少,而本書則嘗試彌補這一缺憾。本書是筆者繼《Hadoop技術內幕:深入解析MapReduce架構設計與實現原理》之后的又一本剖析Hadoop內幕的書籍。

本書介紹的YARN(Yet Another Resource Negotiator)系統是Hadoop 2.0新增加的一個子項目(與Common、MapReduce和HDFS三個分支并列),它的引入使得分布式計算系統進入平臺化時代,即各種計算框架可以運行在一個集群中,由資源管理系統進行統一管理和調度,它們共享整個集群中的資源進而提高資源利用率。

本書以Hadoop 2.0為基礎,從基本概念、程序設計和內部實現等方面深入剖析了Hadoop YARN。本書重點分析了YARN的核心實現以及運行在YARN上的計算框架,其中,核心實現包括基礎庫、編程接口、ResourceManager實現、資源調度器實現、NodeManager實現等,而計算框架則包括離線計算框架MapReduce、DAG計算框架Tez、實時計算框架Storm和內存計算框架Spark等。書中不僅詳細介紹了YARN各個組件和計算框架的內部實現原理,而且結合源代碼進行了深入剖析,使讀者可以快速、全面地學習Hadoop YARN設計原理和實現細節。

讀者對象

(1)Hadoop二次開發人員

由于在擴展性、容錯性和穩定性等方面的諸多優點,Hadoop已被越來越多公司采用,而為了減少開發成本,大部分公司在Hadoop基礎上進行二次開發,以打造屬于公司內部的Hadoop平臺。對于這部分Hadoop二次開發人員,深入而又全面地了解Hadoop的設計與實現細節是修改Hadoop內核的前提,而本書可幫助這部分讀者快速而又全面地了解Hadoop實現細節。

(2)Hadoop應用開發人員

如果要利用Hadoop進行高級應用開發,僅掌握Hadoop基本使用方法是遠遠不夠的,必須對Hadoop框架的設計原理、架構和運作機制有一定的了解。對這部分讀者而言,本書將帶領他們全面了解Hadoop的設計和實現,加深對Hadoop框架的理解,提高開發水平,從而編寫出更加高效的應用程序。

(3)Hadoop運維工程師

對于一名合格的Hadoop運維工程師而言,適當地了解Hadoop框架的設計原理、架構和運作機制是十分有幫助的,這不僅可以更快地排除各種可能的Hadoop故障,也能夠讓Hadoop運維人員與研發人員進行更有效地溝通。通過閱讀本書,Hadoop運維人員可以了解到很多從其他書中無法獲取的Hadoop實現細節。

(4)開源軟件愛好者

Hadoop是開源軟件中的佼佼者,它在實現的過程中吸收了很多開源領域的優秀思想,同時也有很多值得學習的創新。尤為值得一提的是,本書分析Hadoop設計和實現的方式也許值得所有開源軟件愛好者進行學習和借鑒。通過閱讀本書,這部分讀者不僅能領略到開源軟件的優秀思想,還可以掌握分析開源軟件源代碼的方法和技巧,從而進一步提高使用開源軟件的效率和質量。

如何閱讀本書

本書分為四大部分(不包括附錄):

第一部分為基礎篇(第1∼2章),簡單地介紹Hadoop YARN的環境搭建和基本設計架構,幫助讀者了解一些基礎背景知識。

第二部分為YARN核心設計篇(第3∼7章),著重講解YARN基本庫、應用程序設計方法和運行時環境的實現,包括ResourceManager、NodeManager和資源調度器等關鍵組件的內部實現細節。

第三部分為計算框架篇(第8∼10章),主要講解當前比較流行的可運行在YARN上的計算框架,包括離線計算框架MapReduce、DAG計算框架Tez、實時計算框架Storm和內存計算框架Spark。

第四部分為高級篇(第11∼13章),主要介紹了幾個類似于Hadoop YARN的開源資源管理系統,包括Corona、Mesos等,并總結了資源管理系統的特點及發展趨勢。

另外本書最后還添加了幾個附錄:附錄A為YARN安裝指南;附錄B介紹了常見的YARN配置參數;附錄C介紹了常用的Hadoop Shell命令;附錄D為本書的所有參考資料,包括參考論文、Hadoop jira和網絡資源等。

Hadoop YARN是Hadoop 2.0新引入的系統,對于大部分讀者而言,該系統存在很多疑惑與未知之處,而本書正是嘗試全方位剖析該系統。為了能夠系統化地學習YARN,推薦讀者從第1章的基礎理論知識開始學習。

勘誤和支持

由于筆者的水平有限,加之編寫時間倉促,書中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。為此,筆者特意創建一個在線支持與應急方案的站點http://hadoop123.com。你可以將書中的錯誤發布在Bug勘誤表頁面中,同時如果你遇到任何問題,也可以訪問Q&A頁面,我將盡量在線上為讀者提供最滿意的解答。如果你有更多的寶貴意見,也歡迎發送郵件至郵箱dongxicheng@yahoo.com,期待能夠得到你們的真摯反饋。

致謝

感謝我的導師廖華明副研究員,是她引我進入Hadoop世界。

感謝騰訊的蔡斌老師,正是由于他的推薦,才使得兩本Hadoop書的出版成為可能。

感謝機械工業出版社華章公司的楊福川老師和孫海亮老師在這一年多的時間中始終支持我的寫作,他們的鼓勵和幫助使我順利完成了本書。

感謝何鵬、姜冰、鄭偉偉、戰科宇、周禮、劉晏辰、王群等人給我提供的各種幫助。

最后感謝我的父母,感謝他們的養育之恩,感謝兄長的鼓勵和支持,感謝他們時時刻刻給我信心和力量!感謝我的女朋友顓悅對我生活的細心照料與瑣事上的寬容。

謹以此書獻給我最親愛的家人,以及眾多熱愛Hadoop的朋友們!



董西成

于北京
內容簡介:

是“Hadoop技術內幕”系列的第3本書,前面兩本分別對Common、HDFS和MapReduce進行了深入分析和講解,贏得了極好的口碑,Hadoop領域幾乎人手一冊,本書則對YARN展開了深入的探討,是首部關于YARN的專著。仍然由資深Hadoop技術專家董西成執筆,根據最新的Hadoop 2.0版本撰寫,權威社區ChinaHadoop鼎力推薦。

本書從應用角度系統講解了YARN的基本庫和組件用法、應用程序設計方法、YARN上流行的各種計算框架(MapReduce、Tez、Storm、Spark),以及多個類YARN的開源資源管理系統(Corona和Mesos);從源代碼角度深入分析YARN的設計理念與基本架構、各個組件的實現原理,以及各種計算框架的實現細節。

全書共四部分13章:第一部分(第1~2章)主要介紹了如何獲取、閱讀和調試Hadoop的源代碼,以及YARN的設計思想、基本架構和工作流程;第二部分(第3~7章)結合源代碼詳細剖析和講解了YARN的第三方開源庫、底層通信庫、服務庫、事件庫的基本使用和實現細節,詳細講解了YARN的應用程序設計方法,深入講解和分析了ResourceManager、資源調度器、NodeManager等組件的實現細節;第三篇(第8~10章)則對離線計算框架MapReduce、DAG計算框架Tez、實時計算框架Storm和內存計算框架Spark進行了詳細的講解;第四部分(第11~13章)首先對Facebook Corona和Apache Mesos進行了深入講解,然后對YARN的發展趨勢進行了展望。附錄部分收錄了YARN安裝指南、YARN配置參數以及Hadoop Shell命令等非常有用的資料。
目錄:

前 言

第一部分 準備篇

第1章 環境準備 2

1.1 準備學習環境 2

1.1.1 基礎軟件下載 2

1.1.2 如何準備Linux環境 3

1.2 獲取Hadoop源代碼 5

1.3 搭建Hadoop源代碼閱讀環境 5

1.3.1 創建Hadoop工程 5

1.3.2 Hadoop源代碼閱讀技巧 8

1.4 Hadoop源代碼組織結構 10

1.5 Hadoop初體驗 12

1.5.1 搭建Hadoop環境 12

1.5.2 Hadoop Shell介紹 15

1.6 編譯及調試Hadoop源代碼 16

1.6.1 編譯Hadoop源代碼 17

1.6.2 調試Hadoop源代碼 18

1.7 小結 20

第2章 YARN設計理念與基本架構 21

2.1 YARN產生背景 21

2.1.1 MRv1的局限性 21

2.1.2 輕量級彈性計算平臺 22

2.2 Hadoop基礎知識 23

2.2.1 術語解釋 23

2.2.2 Hadoop版本變遷 25

2.3 YARN基本設計思想 29

2.3.1 基本框架對比 29

2.3.2 編程模型對比 30

2.4 YARN 基本架構 31

2.4.1 YARN基本組成結構 32

2.4.2 YARN通信協議 34

2.5 YARN工作流程 35

2.6 多角度理解YARN 36

2.6.1 并行編程 36

2.6.2 資源管理系統 36

2.6.3 云計算 37

2.7 本書涉及內容 38

2.8 小結 38

第二部分 YARN核心設計篇

第3章 YARN基礎庫 40

3.1 概述 40

3.2 第三方開源庫 41

3.2.1 Protocol Buffers 41

3.2.2 Apache Avro 43

3.3 底層通信庫 46

3.3.1 RPC通信模型 46

3.3.2 Hadoop RPC的特點概述 48

3.3.3 RPC總體架構 48

3.3.4 Hadoop RPC使用方法 49

3.3.5 Hadoop RPC類詳解 51

3.3.6 Hadoop RPC參數調優 57

3.3.7 YARN RPC實現 57

3.3.8 YARN RPC應用實例 61

3.4 服務庫與事件庫 65

3.4.1 服務庫 66

3.4.2 事件庫 66

3.4.3 YARN服務庫和事件庫的使用方法 68

3.4.4 事件驅動帶來的變化 70

3.5 狀態機庫 72

3.5.1 YARN狀態轉換方式 72

3.5.2 狀態機類 73

3.5.3 狀態機的使用方法 73

3.5.4 狀態機可視化 76

3.6 源代碼閱讀引導 76

3.7 小結 77

3.8 問題討論 77

第4章 YARN應用程序設計方法 78

4.1 概述 78

4.2 客戶端設計 79

4.2.1 客戶端編寫流程 80

4.2.2 客戶端編程庫 84

4.3 ApplicationMaster設計 84

4.3.1 ApplicationMaster編寫流程 84

4.3.2 ApplicationMaster編程庫 92

4.4 YARN 應用程序實例 95

4.4.1 DistributedShell 95

4.4.2 Unmanaged AM 99

4.5 源代碼閱讀引導 100

4.6 小結 100

4.7 問題討論 100

第5章 ResourceManager剖析 102

5.1 概述 102

5.1.1 ResourceManager基本職能 102

5.1.2 ResourceManager內部架構 103

5.1.3 ResourceManager事件與事件處理器 106

5.2 用戶交互模塊 108

5.2.1 ClientRMService 108

5.2.2 AdminService 109

5.3 ApplicationMaster管理 109

5.4 NodeManager管理 112

5.5 Application管理 113

5.6 狀態機管理 114

5.6.1 RMApp狀態機 115

5.6.2 RMAppAttempt狀態機 119

5.6.3 RMContainer狀態機 123

5.6.4 RMNode狀態機 127

5.7 幾個常見行為分析 129

5.7.1 啟動ApplicationMaster 129

5.7.2 申請與分配Container 132

5.7.3 殺死Application 134

5.7.4 Container超時 135

5.7.5 ApplicationMaster超時 138

5.7.6 NodeManager超時 138

5.8 安全管理 139

5.8.1 術語介紹 139

5.8.2 Hadoop認證機制 139

5.8.3 Hadoop授權機制 142

5.9 容錯機制 144

5.9.1 Hadoop HA基本框架 145

5.9.2 YARN HA實現 148

5.10 源代碼閱讀引導 149

5.11 小結 151

5.12 問題討論 152

第6章 資源調度器 153

6.1 資源調度器背景 153

6.2 HOD調度器 154

6.2.1 Torque資源管理器 154

6.2.2 HOD作業調度 155

6.3 YARN資源調度器的基本架構 157

6.3.1 基本架構 157

6.3.2 資源表示模型 160

6.3.3 資源調度模型 161

6.3.4 資源搶占模型 164

6.4 YARN層級隊列管理機制 169

6.4.1 層級隊列管理機制 169

6.4.2 隊列命名規則 171

6.5 Capacity Scheduler 172

6.5.1 Capacity Scheduler的功能 172

6.5.2 Capacity Scheduler實現 176

6.6 Fair Scheduler 179

6.6.1 Fair Scheduler功能介紹 180

6.6.2 Fair Scheduler實現 182

6.6.3 Fair Scheduler與Capacity Scheduler對比 183

6.7 其他資源調度器介紹 184

6.8 源代碼閱讀引導 185

6.9 小結 186

6.10 問題討論 187

第7章 NodeManager剖析 188

7.1 概述 188

7.1.1 NodeManager基本職能 188

7.1.2 NodeManager內部架構 190

7.1.3 NodeManager事件與事件處理器 193

7.2 節點健康狀況檢測 194

7.2.1 自定義Shell腳本 194

7.2.2 檢測磁盤損壞數目 196

7.3 分布式緩存機制 196

7.3.1 資源可見性與分類 198

7.3.2 分布式緩存實現 200

7.4 目錄結構管理 203

7.4.1 數據目錄管理 203

7.4.2 日志目錄管理 203

7.5 狀態機管理 206

7.5.1 Application狀態機 207

7.5.2 Container狀態機 210

7.5.3 LocalizedResource狀態機 213

7.6 Container生命周期剖析 214

7.6.1 Container資源本地化 214

7.6.2 Container運行 218

7.6.3 Container資源清理 222

7.7 資源隔離 224

7.7.1 Cgroups介紹 224

7.7.2 內存資源隔離 228

7.7.3 CPU資源隔離 230

7.8 源代碼閱讀引導 234

7.9 小結 235

7.10 問題討論 236

第三部分 計算框架篇

第8章 離線計算框架MapReduce 238

8.1 概述 238

8.1.1 基本構成 238

8.1.2 事件與事件處理器 240

8.2 MapReduce客戶端 241

8.2.1 ApplicationClientProtocol協議 242

8.2.2 MRClientProtocol協議 243

8.3 MRAppMaster工作流程 243

8.4 MR作業生命周期及相關狀態機 246

8.4.1 MR作業生命周期 246

8.4.2 Job狀態機 249

8.4.3 Task狀態機 253

8.4.4 TaskAttempt狀態機 255

8.5 資源申請與再分配 259

8.5.1 資源申請 259

8.5.2 資源再分配 262

8.6 Container啟動與釋放 263

8.7 推測執行機制 264

8.7.1 算法介紹 265

8.7.2 推測執行相關類 266

8.8 作業恢復 267

8.9 數據處理引擎 269

8.10 歷史作業管理器 271

8.11 MRv1與MRv2對比 273

8.11.1 MRv1 On YARN 273

8.11.2 MRv1與MRv2架構比較 274

8.11.3 MRv1與MRv2編程接口兼容性 274

8.12 源代碼閱讀引導 275

8.13 小結 277

8.14 問題討論 277

第9章 DAG計算框架Tez 278

9.1 背景 278

9.2 Tez數據處理引擎 281

9.2.1 Tez編程模型 281

9.2.2 Tez數據處理引擎 282

9.3 DAG Master實現 284

9.3.1 DAG編程模型 284

9.3.2 MR到DAG轉換 286

9.3.3 DAGAppMaster 288

9.4 優化機制 291

9.4.1 當前YARN框架存在的問題 291

9.4.2 Tez引入的優化技術 292

9.5 Tez應用場景 292

9.6 與其他系統比較 294

9.7 小結 295

第10章 實時/內存計算框架Storm/Spark 296

10.1 Hadoop MapReduce的短板 296

10.2 實時計算框架Storm 296

10.2.1 Storm編程模型 297

10.2.2 Storm基本架構 302

10.2.3 Storm On YARN 304

10.3 內存計算框架Spark 307

10.3.1 Spark編程模型 308

10.3.2 Spark基本架構 312

10.3.3 Spark On YARN 316

10.3.4 Spark/Storm On YARN比較 317

10.4 小結 317

第四部分 高級篇

第11章 Facebook Corona剖析 320

11.1 概述 320

11.1.1 Corona的基本架構 320

11.1.2 Corona的RPC協議與序列化框架 322

11.2 Corona設計特點 323

11.2.1 推式網絡通信模型 323

11.2.2 基于Hadoop 0.20版本 324

11.2.3 使用Thrift 324

11.2.4 深度集成Fair Scheduler 324

11.3 工作流程介紹 324

11.3.1 作業提交 325

11.3.2 資源申請與任務啟動 326

11.4 主要模塊介紹 327

11.4.1 ClusterManager 327

11.4.2 CoronaJobTracker 330

11.4.3 CoronaTaskTracker 333

11.5 小結 335

第12章 Apache Mesos剖析 336

12.1 概述 336

12.2 底層網絡通信庫 337

12.2.1 libprocess基本架構 338

12.2.2 一個簡單示例 338

12.3 Mesos服務 340

12.3.1 SchedulerProcess 341

12.3.2 Mesos Master 342

12.3.3 Mesos Slave 343

12.3.4 ExecutorProcess 343

12.4 Mesos工作流程 344

12.4.1 框架注冊過程 344

12.4.2 Framework Executor注冊過程 345

12.4.3 資源分配到任務運行過程 345

12.4.4 任務啟動過程 347

12.4.5 任務狀態更新過程 347

12.5 Mesos資源分配策略 348

12.5.1 Mesos資源分配框架 349

12.5.2 Mesos資源分配算法 349

12.6 Mesos容錯機制 350

12.6.1 Mesos Master容錯 350

12.6.2 Mesos Slave容錯 351

12.7 Mesos應用實例 352

12.7.1 Hadoop On Mesos 352

12.7.2 Storm On Mesos 353

12.8 Mesos與YARN對比 354

12.9 小結 355

第13章 YARN總結與發展趨勢 356

13.1 資源管理系統設計動機 356

13.2 資源管理系統架構演化 357

13.2.1 集中式架構 357

13.2.2 雙層調度架構 358

13.2.3 共享狀態架構 358

13.3 YARN發展趨勢 359

13.3.1 YARN自身的完善 359

13.3.2 以YARN為核心的生態系統 361

13.3.3 YARN周邊工具的完善 363

13.4 小結 363

附錄A YARN安裝指南 364

附錄B YARN配置參數介紹 367

附錄C Hadoop Shell命令介紹 371

附錄D 參考資料 374
序: