大數據計算系統 原理 技術與應用

王宏志 劉海龍 張立臣 石勝飛

  • 出版商: 機械工業
  • 出版日期: 2023-09-01
  • 售價: $474
  • 貴賓價: 9.5$450
  • 語言: 簡體中文
  • 頁數: 332
  • 裝訂: 平裝
  • ISBN: 711173307X
  • ISBN-13: 9787111733072
  • 相關分類: 大數據 Big-data
  • 立即出貨 (庫存 < 4)

商品描述

本書結合作者的科學研究與教學經驗,詳細介紹了目前常用的大數據計算系統的原理、程式設計與維運、最佳化方法。
本書分為基礎篇、應用實現篇、原理篇與監控、維運、調優篇四個部分,基礎篇介紹大數據計算系統的基本概念,
應用實作篇介紹常用大數據運算系統的程式方法,為後續理解原理奠定基礎;原理篇介紹常用大數據運算系統的架構、運作機制,
並結合實際場景介紹不同計算系統的應用與設計方法;
監控、維運、調優篇介紹了不同運算系統的調優和維護機制,確保大數據計算系統的高效運作。

目錄大綱

目 錄
前言
第一部分 基礎
第1章 大數據計算系統概述2
1.1 大數據計算系統的定義2
1.1.1 大數據2
1.1.2 大數據計算4
1.1.3 大數據計算系統4
1.2 常見的大數據計算系統6
1.2.1 批次計算框架Hadoop6
1.2.2 分散式計算框架Spark6
1.2.3 流計算系統Storm7
1.2.4 分散式圖計算框架GraphX7
1.2.5 大數據計算系統的比較7
1.3 大數據計算系統的監控與維運概述7
1.3.1 概述7
1.3.2 監控與維運的範圍8
1.3.3 大數據計算系統的監控與維運方法8
1.3.4 大數據計算系統的維運目標9
1.4 大數據計算系統的效能最佳化10
1.4.1 提升大數據計算系統性能的途徑10
1.4.2 提升大數據計算系統性能的難度11
1.4.3 維與性能優化的關係12
習題1 12
第二部分 應用實現
第2章 Hadoop的配置與程式14
2.1 批次計算框架概述14
2.1.1 計算框架14
2.1.2 批次15
2.2 Hadoop環境的配置與搭建15
2.2.1 環境配置前的準備15
2.2.2 Hadoop安裝的預備知識16
2.2.3 本地/獨立模式的配置17
2.2.4 偽分佈式模式的配置18
2.2.5 全分散式模式的配置20
2.3 一個簡單範例22
2.3.1 環境與資料的準備22
2.3.2 在IDEA下建立基於Maven的Hadoop專案23
2.3.3 編寫WordCount程式26
2.3.4 Hadoop程式的運行過程與結果查看29
2.4 MapReduce程式設計30
2.4.1 MapReduce計算模型30
2.4.2 MapReduce程式的運行過程32
2.4.3 去重38
習題2 41
第3章 HDFS及其應用42
3.1 HDFS概述42
3.2 HDFS Shell43
3.2.1 概述43
3.2.2 幫助的使用方法44
3.2.3 通用命令列操作45
3.3 HDFS目錄與資料的瀏覽47
3.4 HDFS API48
3.4.1 概述48
3.4.2 讀文件操作48
3.4.3 寫文件操作48
3.4.4 FileUtil檔案處理49
3.4.5 HDFS API應用範例51
習題3 57
第4章 Spark的配置與程式設計58
4.1 Spark環境的安裝與部署59
4.1.1 Spark的安裝59
4.1.2 Scala的安裝60
4.1.3 Spark的源碼編譯61
4.1.4 搭建Spark單機版環境64
4.1.5 搭建Spark獨立運作環境66
4.1.6 搭建Spark on YARN環境68
4.1.7 Spark的高可用性部署70
4.2 Spark的運行72
4.2.1 Spark程式運行概述72
4.2.2 Spark的本地運行過程73
4.2.3 獨立運轉模式74
4.2.4 Spark on YARN的運行過程75
4.2.5 獨立運行模式與YARN模式的比較76
4.3 Spark Scala編程76
4.3.1 Scala的語法76
4.3.2 Scala程式設計入門82
4.3.3 Spark API的使用86
4.3.4 用Scala開發Spark應用程式的案例88
4.3.5 程式運行過程的分析93
習題4 95
第5章 Storm的配置與程式設計96
5.1 流計算概述96
5.2 Storm概述98
5.2.1 什麼是Storm98
5.2.2 Storm的特徵98
5.3 Storm開發環境的搭建99
5.3.1 Storm環境的配置99
5.3.2 命令列客戶端102
5.3.3 IDEA下建立Storm的Maven專案107
5.4 Storm編程109
5.4.1 可以與Storm整合的系統109
5.4.2 計算模型109
5.4.3 可以使用任何語言110
5.4.4 簡單的API110
5.5 Storm程式範例—單字計數110
5.5.1 達成目標110
5.5.2 建立編寫程式的套件名稱111
5.5.3 編寫spouts檔Word-Reader112
5.5.4 編寫bolts檔Word-Normalizer114
5.5.5 編寫bolts檔WordCounter115
5.5.6 編寫主函數檔Topologoy-Main116
5.5.7 透過主函數檔Topologoy-
Main運行程式117
習題5 117
第6章 GraphX及其應用118
6.1 圖計算概述118
6.1.1 圖118
6.1.2 屬性圖119
6.1.3 圖計算119
6.1.4 支援圖計算的GraphX120
6.2 GraphX程式設計120
6.2.1 GraphX專案的導入120
6.2.2 GraphX中屬性圖的表達120
6.2.3 圖操作符121
6.3 GraphX程式設計範例126
6.3.1 一個簡單的GraphX範例126
6.3.2 GraphX應用程式設計—子圖發現129
6.3.3 GraphX應用程式設計—
PageRank130
習題6  132
第三部分 原理
第7章 Hadoop的原理134
7.1 Hadoop的體系結構134
7.2 MapReduce的工作機制135
7.2.1 背景135
7.2.2 計算的執行流程137
7.2.3 計算的本地性138
7.3 MapReduce作業的運作機制139
7.3.1 經典的MapReduce139
7.3.2 YARN145
7.4 作業的調度149
7.4.1 調度選項149
7.4.2 FIFO調度器150
7.4.3 容量調度器151
7.4.4 公平調度器151
7.4.5 延遲調度152
7.4.6 主導資源的公平性153
7.5 任務的執行153
7.5.1 任務執行的環境153
7.5.2 任務的JVM重用155
7.6 Shuffle的工作原理157
7.6.1 Map端157
7.6.2 Reduce端162
習題7  166
第8章 HDFS的原理167
8.1 HDFS的體系結構167
8.1.1 NameNode的工作原理168
8.1.2 次級NameNode169
8.1.3 DataNode的工作原理170
8.1.4 NameNode與DataNode的關係171
8.1.5 複製172
8.1.6 心跳機制173
8.2 HDFS中的資料存取174
8.2.1 HDFS的寫入流程174
8.2.2 HDFS的讀取流程175
8.2.3 HDFS的資料刪除流程176
8.3 安全機制177
8.4 容錯機制179
8.4.1 HDFS異常處理179
8.4.2 流水線恢復185
8.4.3 故障檢測186
8.4.4 NameNode節點容錯187
8.5 HDFS on YARN187
8.5.1 NameNode單點故障187
8.5.2 HDFS Federation188
8.5.3 高可用性190
習題8  190
第9章 Spark的原理192
9.1 Spark的原理概述192
9.2 Spark的RDD194
9.2.1 什麼是RDD194
9.2.2 RDD的操作195
9.2.3 RDD的特性206
9.2.4 RDD的實現原理207
9.3 Spark的儲存209
9.3.1 概述209
9.3.2 RDD的持久化210
9.3.3 Shuffle資料的持久化211
9.4 Spark任務的執行與提交213
9.4.1 跨應用程式進行調度213
9.4.2 Spark作業調度214
9.5 Spark的容錯原理215
9.5.1 Lineage容錯216
9.5.2 檢查點容錯216
習題9 216
第10章 Storm的原理218
10.1 Storm的概念與系統架構218
10.1.1 Storm的基本概念218
10.1.2 Storm的系統架構221
10.2 Storm的運作原理222
10.2.1 Storm的工作流程222
10.2.2 Storm元資料223
10.3 Storm拓樸的並發機制223
10.3.1 拓樸的運行223
10.3.2 配置拓樸的並行度224
10.4 Storm的通訊機制225
10.4.1 Worker進程間通訊225
10.4.2 Worker進程間通訊的分析226
10.5 Storm的容錯227
10.5.1 任務等級失敗227
10.5.2 任務槽故障等級失敗227
10.5.3 叢集節點故障227
10.5.4 Nimbus節點故障227
習題10 227
第11章 GraphX的原理229
11.1 GraphX概述229
11.2 GraphX的圖資料儲存230
11.2.1 圖資料儲存策略230
11.2.2 GraphX中儲存策略的實作232
11.3 GraphX對圖計算的支援234
11.3.1 GraphX中的圖計算操作234
11.3.2 GraphX對Pregel的實現236
習題11 239
第四部分 監控、維運與調優
第12章 大數據計算系統的監控242
12.1 監控的準備工作242
12.1.1 掌握系統的硬體環境242
12.1.2 掌握系統的網路環境244
12.1.3 掌握系統的配置環境245
12.2 監控內容248
12.2.1 硬體資源的監控248
12.2.2 HDFS的監控250
12.2.3 上層服務的監控251
12.3 Hadoop監控的相關參數251
12.3.1 JVM指標251
12.3.2 RPC指標252
12.3.3 NameNode指標253
12.3.4 DataNode指標254
12.4 透過HTTP介面監控Hadoop的狀態254
12.5 Hadoop的監控指令255
12.5.1 fsck指令255
12.5.2 dfsadmin指令256
12.6 編寫自己的監控工具259
12.7 利用Ganglia進行Hadoop叢集監控259
12.7.1 Ganglia的安裝260
12.7.2 Ganglia的使用測試262
12.8 Hadoop的其他監控工具264
習題12 264
第13章 大數據計算系統的運維265
13.1 Hadoop及相關服務的啟動與停止265
13.1.1 啟動操作及順序265
13.1.2 停止操作及順序267
13.1.3 任務停止後的日誌查看268
13.2 使用者身分確認及授權270
13.2.1 身份確認270
13.2.2 授權271
13.3 Hadoop的維運指令272
13.3.1 Hadoop Shell中的維運指令273
13.3.2 增加DataNode275
13.3.3 刪除DataNode277
13.4 Hadoop中的資料遷移與備份279
13.4.1 HDFS資料塊的自動備份279
13.4.2 Hadoop資料目錄的遷移279
13.4.3 利用distcp進行資料遷移280
13.5 Hadoop的容災處理282
13.5.1 NameNode多目錄配置282
13.5.2 DataNode多目錄配置283
13.5.3 配置高可用:冷備份283
13.5.4 配置高可用:熱備份285
13.5.5 測試Hadoop高可用的自動容災287
13.6 基於Greenplum進行Hadoop故障檢測287
習題13 288
第14章 大數據計算系統的調優289
14.1 為什麼要進行調優289
14.2 如何調優290
14.2.1 明確調優的範圍291
14.2.2 明確調優的目的292
14.2.3 調優不是一勞永逸的293
14.3 Hadoop的效能指標293
14.3.1 Hadoop的作業效能問題分析293
14.3.2 Hadoop的負載分析293
14.4 系統優化299
14.4.1 作業系統的最佳化299
14.4.2 JVM參數的最佳化299
14.5 機架感知對性能調優的影響302
14.6 Hadoop系統參數調優304
14.6.1 Hadoop系統的參數304
14.6.2 參數優化的原則316
14.6.3 參數調優的案例316
14.7 生產環境的Hadoop效能優化319
習題14 320